Linux库文件

一、库类型

动态函数库: .a后缀

静态函数库: .so后缀

二、使用链接器链接库

1.Linux标准库路径:/lib:/usr/lib

但是,在默认情况下,C链接程序只会在Linux标准库路径下搜索标准C语言库。所以,对于开发者而言,仅仅将非标准C语言库文件放在标准目录中,就希望编译器能够找到它是不够的,库文件必须遵循特定的命名规范并且需要在命令行中明确指定。

2.库文件命名规范

lib + 库名 + .a/.so

3.命令行指定要链接的库,使用示例如下:

(1)指定链接Linux标准库路径下的非标准C语言库(这种情况下,库路径已知,可省略)

gcc  -o  fred.exe  fred.c  /usr/lib/libm.a //指定链接静态库

gcc  -o  fred.exe  fred.c  -lm //优先链接动态库

(2)指定链接非Linux标准库路径下的非标准C语言库

gcc  -o  x11fred  x11fred.c  /usr/openwin/lib/libX11.so //指定链接动态库

gcc  -o  x11fred  -L/usr/openwin/lib  x11fred.c  -lX11 //有限链接动态库

总结:对于Linux标准库路径下的库,我们只需要用-l或者库路径来指明要链接的库;对于非Linux标准库路径下的库,我们需要用-L指明库所在目录,并用-l或者库路径来指明要链接的库。对于用-l或者库路径的区别——-l让链接器优先选择链接同名动态库,库路径使得链接器直接链接库路径指定的库。

三、构建自己的静态库

目标:将bill.c和fred.c打包成一个.a库

工具:ar

步骤:

gcc  -c  bill.c  fred.c //编译不链接,创建bill.o  fred.o

ar  -crv  libfoo.a  bill.o  fred.o

randlib  libfoo.a //为库函数生成一个内容表,Linux下非必须

四、构建自己的动态库

目标:将bill.c和fred.c打包成一个.a库

工具:ar

步骤:

gcc  -c  bill.c  fred.c //编译不链接,创建bill.o  fred.o

gcc  -shared  -o  libfoo.so  bill.o  fred.o

五、编译链接并运行链接到动态链接库的程序

1.gcc -o program program.cpp -L. -lfoo

2.将libfoo.so路径添加到LD_LIBRARY_PATH环境变量,使得program运行时能正确加载到

3. ./program

六、查看可执行程序依赖的动态库

ldd  program  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

denglin12315

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值