gcc编译器中静态库/动态库的创建

gcc编译器中静态库/动态库的创建

一、静态库的创建

静态库(name.a):是一系列 .o文件的归档文件。在代码编译时遇到静态库的链接,链接器会连接到静态库,直接将静态库的代码直接复制到该程序中。

  1. 预先创建好要导入静态库的代码,保存为.c文件(如 un.c)
$ vim un.c  //进入vim命令界面,按i/a进入编辑。输入完成后Esc返回命令界面,输入 :wq保存并退出。
  1. 使用gcc编译成.o文件,代码如下:
$ gcc -c un.c //执行后,在此文件夹内会生成一个汇编后的.o文件(un.o),可用 ls 查看。
  1. 使用归档工具ar将目标文件归档在一起,创建静态库:
$ ar rcsv libname.a un.o
a - un.o  //静态库创建成功,目录下生成libname.a文件。
  1. 在另外一个需要链接到该函数的.c文件编译时,要指明静态库的路径,使用代码如下:`
gcc -o test un.c -L. -lname   //生成可执行文件test.`

  1. 使用函数:./test

二、动态库的创建

动态库(name.so):在程序编译时不会被链接到目标代码中,而是在程序运行时才被载入。

  1. 使用gcc的 -fPIC 创建一个目标文件(.o),代码如下:
$ gcc -fPIC -Wall -c un.c //生成un.o ;
  1. 使用 -shared 选项生成一个动态库 libt.so,代码如下:
$ gcc -shared -o test1 t.c -L. -lname //生成libt.so文件;
  1. 需手动注册动态库文件名,一种方法为:直接将生成的 libt.so 文件移动或复制到 /usr/lib 文件夹下即可。代码为:mv libt.so /usr/lib
  2. 编译含有该函数的主程序,将链接到以上创建的动态库,其操作和静态库一致,代码为:
$ gcc -o test1 un.c -L. -lname   //生成可执行文件test.`
  1. 使用该函数:$ ./test1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值