linux静态库下载,你知道linux 静态库和共享库?

你知道linux 静态库和共享库?

1、静态库和共享库

静态库和共享库(动态库),二者的不同点在于代码被载入的时刻不同。

静态库的代码在编译过程中已经被载入可执行程序,因此体积较大。共享库的代码是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小。

静态链接库和动态链接库的区别在于,主程序在运行前,静态链接库的链接固定写入在程序中,而动态链接库则是在每次程序运行再加载链接。

2、库存在的意义库是别人写好的现有的,成熟的,可以复用的代码,你可以使用但要记得遵守许可协议。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。共享库的好处是,不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例。

3.静态库 Step 1.由源文件编译生成一堆.o,每个.o里都包含这个编译单元的符号表 Step 2.ar 命令将很多.o转换成.a,成为静态库

静态链接库libcool.a 遵从GNU/Linux 规定的静态链接库命名规范,必须是”libyour_library_name.a”

动态库的后缀是.so,它由gcc加特定参数编译产生。 4、动态库

在GNU/Linux 中动态链接文件,必需通过链接器ld 生成。假设我们有hot.c other.c 等文件要生成动态链接库libhot.so 。首先使用如下指令得到相应的object 文件hot.o 和other.o gcc -fPIC -c hot.c gcc -fPIC -c other.c 参数-fPIC 指定生成的object 文件为位置无关代码(position-independence code),只有PIC 可以被用作生成动态链接库。然后使用如下指令得到动态库:

ld -Bshared -o libhot.so hot.o other.o 或者可以使用编译器的ld wrapper: gcc -shared -o libhot.so hot.o other.o 也可以使用编译器直接生成动态库: gcc -fPIC -shared -o libhot.so hot.c other.c 这里选项-shared 指示目标文件的类型是动态链接库,动态库的命名规范是”libyour_library_name.so”

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值