【linux】库的制作

Linux下lib库的制做

1.静态库:lib库名.a

1.1静态库的特点

静态库:静态库的命名格式libxxx.a格式,它是由xxx.c文件编译而来的。

静态库在被工程师使用的时候会将库中的函数和工程师代码最终编译到

一起,生成一个可执行程序。所以使用静态库的可执行程序的体积比较

大,效率是比较高的(运行的时候不需要依赖库文件),静态库更新麻烦。

1.2静态库的制作

gcc -c add.c -o add.o //将.c的文件只编译不链接,生成add.o的文件

ar -cr libadd.a add.o //ar 制作静态库的命令 -c创建静态库 -r将add.o的函数归档到libadd.a中

1.3静态库的使用

-L :库的路径
-l(小写L) :链接库
-I(大写i) :头文件的路径
#eg:
gcc main.c -L ../lib/ -ladd -I ../inc/ -o ../bin/add

2.动态库:lib库名.so(libc.so/libm.so)

2.1动态库的特点

动态库:动态库的命名格式libxxx.so格式,它是由xxx.c文件编译而来的。

动态库在被工程师使用的时候,只是将库中函数的符号表和工程师的代码编译

生成了一个可执行程序。所以使用动态库的可执行程序的体积比较小,效率

低,可执行程序运行的时候需要依赖动态库,动态库更新简单。动态库又叫

共享库

2.2动态库的制作

gcc -fPIC -shared add.c -o libadd.so//制作动态库的命令 -fPIC忽略文件位置 -shared 共享库

2.3动态库的使用

-L :库的路径
-l(小写L) :链接库
-I(大写i) :头文件的路径
#eg:
gcc main.c -L ../lib/ -ladd -I ../inc/ -o ../bin/add

2.4运行依赖动态库的可执行程序

在不指定库路径的情况下,会出现加载库文件失败

:可以通过ldd命令查看一个可执行程序中链接的动态库

//没有找到库文件
libadd.so => not found

指定库的路径的方法:

方法1:将自己的库拷贝到/lib目录下

sudo mv libadd.so /lib

方法2:通过指定LD_LIBRARY_PATH临时生效

export LD_LIBRARY_PATH=/home/xxx/xxx/lib

方法3:通过系统的配置文件指定库的路径

sudo vi /etc/ld.so.conf.d/libc.conf

在最后一行加上库的路径 /home/xxx/xxx/lib

后运行 sudo ldconfig //让配置文件生效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值