linux 库的创建与使用

linux 库的概念

库是一种软件组件技术,库里面封装了数据和函数,提供给用户程序调用。库的使用可以使程序模块化,提高程序的编译速度,实现代码重用,使程序易于升级。

windows 系统本身提供并使用了大量的库,包括静态链接库(.lib文件)和动态链接库(.dll文件)。类似的,linux操作系统也使用库。linux系统中,通常把库文件存放在/usr/lib或/lib目录下。linux库文件名由前缀lib、库名以及后缀3部分组成,其中动态库以.so作为后缀,而静态库通常以.a作为后缀。

静态库的创建和使用

创建静态库的步骤如下:

(1)在一个头文件中声明静态库所导出的函数。

(2)在一个源文件中实现静态库所导出的函数。

(3)编译源文件,生成可执行代码。

(4)将可执行代码所在的目标文件加入到某个静态库中,并将静态库拷贝到系统默认的存放库文件的目录下。

实例说明:

头文件 mylib.h

#ifndef _mylib_h_
#define _mylib_h_
void welcome();
void outstring(const char* str);
#endif

源文件 mylib.c

#include "mylib.h"
#include <stdio.h>
void welcome()
{
  printf("welcome to libmylib\n");
}

void outstring(const char* str)
{
  if(str != NULL)
    printf("%s",str);
}

编译mylib.c 生成目标文件:

[xyk@xyk linking]$ gcc -o mylib.o -c mylib.c

将目标文件加入到静态库中,静态库为libmylib.a

[xyk@xyk linking]$ ar rcs libmylib.a mylib.o

将静态库拷贝到linux的库目录(/usr/lib 或/lib)下:

[root@xyk linking]# cp libmylib.a /usr/lib/libmylib.a

测试程序 test.c

#include <stdio.h>
#include "mylib.h"
int main()
{
  printf("create and use library:\n");
  welcome();
  outstring("It's successful\n");
}
编译使用了库函数的程序:

[xyk@xyk linking]$ gcc -o test test.c -lmylib

运行生成的可执行程序test:

[xyk@xyk linking]$ ./test
create and use library:
welcome to libmylib
It's successful


动态库的创建与使用

在linux环境下,可以很方便的创建和使用动态链接库。只要在编译函数库源程序时加上-shared选项即可,这样生成的可执行程序就为动态链接库。

实例说明:

[xyk@xyk linking]$ gcc -fPIC -shared -o libttt.so mylib.c

将静态库拷贝到linux的库目录(/usr/lib 或/lib)下:

[root@xyk linking]# cp libttt.so /usr/lib/libttt.so

使用动态链接:

[xyk@xyk linking]$ gcc -o test test.c /usr/lib/libttt.so

运行程序test:

[xyk@xyk linking]$ ./test
create and use library:
welcome to libmylib
It's successful






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值