Linux下的库文件

16 篇文章 0 订阅

搜集、整理、加上了一些自己的理解。

Linux下有两种库文件:

1、静态库---- xxx.a

2、动态库---- xxx.so

 

//TODO 动态库,静态库区别:

1、链接方式:

      静态库在编译的时候会链接到程序。

      动态库在加载时指定程序的跳转位置。---有点忘了,后续补充吧。



查看一个程序对库的依赖:

使用ldd命令可以查看程序依赖哪些库。


动态库加载:

elf可执行程序是由ld-linux.so*完成加载的。它会查找/lib, /usr/lib目录下的动态库。

如果你编写的动态库不在这两个默认目录系,那么就需要你提供信息给加载器,

告诉它你的动态库路径。步骤如下:

   1、在/etc/ld.so.conf.d目录下建立一个config文件, xxx.conf。内容指定你的动态库目录。

   2、运行ldconfig,重建/etc/ld.so.cache文件。

另外,gcc的环境变量LIBRARY_PATH可以告诉j加载器库目录。


静态库、动态库的创建:

库文件都是有xxx.o目标文件组成。所以需要把源文件都编译成xxx.o。

    gcc -o xxx.c

1、创建静态库:

    使用ar命令。

    ar rcs xxx.a xxx.o

    链接静态库

    gcc -o ... -static -L. -lxxx 

2、创建动态库:

     使用gcc来创建动态库。

     gcc -shared -fPIC -o xxx.so xxx.o

     链接动态库

     gcc -o ... -L -lxxx


这些过程大多数都被隐藏在集成开发环境背后,上面的命令是否正确我也没有验证过,

只是想熟悉一下大概过程。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值