问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux静态库怎么编译

发布网友 发布时间:2022-04-19 13:22

我来回答

1个回答

热心网友 时间:2023-09-04 13:14

linux库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so
libhello.a
为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如:
libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。
ln
-s
libhello.so.1.0
libhello.so.1
ln
-s
libhello.so.1
libhello.so
动态库和静态库的区别:
当要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。然而,对动态库而言,就不是这样。动态库会在执行程序内留下一个标记‘指明当程序执行时,首先必须载入这个库。由于动态库节省空间,linux下进行连接的缺省操作是首先连接动态库,也就是说,如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。
两种库的编译产生方法:
第一步要把源代码编绎成目标代码。以下面的代码hello.c为例,生成hello库:
/*
hello.c
*/
#include
void
sayhello()
{
printf("hello,world\n");
}
用gcc编绎该文件,在编绎时可以使用任何全法的编绎参数,例如-g加入调试代码等:
gcc
-c
hello.c
-o
hello.o
1.连接成静态库
连接成静态库使用ar命令,其实ar是archive的意思
$ar
cqs
libhello.a
hello.o
2.连接成动态库
生成动态库用gcc来完成,由于可能存在多个版本,因此通常指定版本号:
$gcc
-shared
-wl,-soname,libhello.so.1
-o
libhello.so.1.0
hello.o
另外再建立两个符号连接:
$ln
-s
libhello.so.1.0
libhello.so.1
$ln
-s
libhello.so.1
libhello.so
这样一个libhello的动态连接库就生成了。最重要的是传gcc
-shared
参数使其生成是动态库而不是普通执行程序。
-wl
表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找拥有
soname名字的文件,%b
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
电脑屏保息屏时间设置怎么设置电脑几分钟自动锁屏时间 如何设置电脑三分钟锁屏怎么设置电脑几分钟自动锁屏时间 为什么CF玩一段时间ping好高 关于CFping高的问题 抖音免费蓝v是永久的吗?需要什么条件? 求皮卡堂金冠。女号跪求啦!要钱很多很多。衣服很多很多。要发35级以 ... 3a证书多少钱一套 成人教育都包括什么 成人教育有哪几种形式 成人教育包括哪些 Linux里面什么是静默安装? Linux怎么添加静态路由? Linux里面什么是静态变量? Linux里面什么是静默状态? linux系统中有哪些静 九阳豆浆机打豆浆需要多长时间 用九阳豆浆机做豆浆时,水和豆子的比例应该是多少? 榨豆浆一次要用装多少水呢 九阳豆浆机打豆浆要多长时间 豆浆机做豆浆用多长时间啊 豆浆机打豆浆多久打好 九阳豆浆机打一次豆浆一般要多长时间? 用豆浆机打一个人的豆浆要多少黄豆和水 打豆浆比例是多少 一般的豆浆机打豆浆多长时间啊? 九阳豆浆机打豆浆需要多长时间? 九阳 豆浆机打豆浆全过程需花费多长时间???? 一般的豆浆机打豆浆多长时间 豆浆机打豆浆需要多长时间 豆浆机做豆浆需要多久 linux静态库和共享库的区别 linux怎么静态编译 LINUX下的静态路由 Linux下的静态库和动态库 linux动态库和静态库的区别 linux终端静默打开软件 Linux中如何创建静态库和动态库 周庄古镇有什么值得推荐游览的地方和美食呢? 周庄古镇美食有哪些?景区内哪些东西值得吃? 周庄古镇的景点比较分散,有哪些值得游览的呢? 想去周庄旅游,大家有什么好的攻略推荐吗? 江苏昆山市的周庄古镇有什么岭南特色美景? 卡帝车控+官网 江南水乡最有名的为什么是周庄古镇? 卡帝车控+官网卡帝车控ID和密码怎么输入? 周庄古镇晚上几点免费开放 卡帝车控gsm离线 苏州十大古镇分别是哪里? 卡帝手机智能控车 手机控车 限制距离吗 卡帝车控绑定的手机不用了怎么充值?