永发信息网

linux下怎么 调用 和生成 静态库

答案:2  悬赏:40  手机版
解决时间 2021-02-05 17:33
linux下怎么 调用 和生成 静态库
最佳答案
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库: #include void sayhello() { printf("hello,world\n"); } 用gcc编绎该文件,在编绎时可以使用任何全法的编绎参数,例如-g加入调试代码等
全部回答
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库: #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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
饥荒格罗姆雕像怎么砸有什么作用
同义字的意思是什么啊?知道的请说下!
【小马可】....中马可运2块..2小马可运1块..
披萨是什么东西,好不好吃啊?
mc女实况主大橙橙橙子有没有男朋友,有没有结
救苦的意思是什么啊?知道的请说下!
和爱人的图片要加密,求一个描述这个相册的问
在负荆请罪前发生的两个故事是什么
跑步时一步跨度是多少啊?如何计算呢?
【错题分析怎么写】孩子做错题了怎么写分析
听说做设计最好用苹果的电脑,做UI设计对电脑
疾霆不暇掩目的意思是什么啊?知道的请说下!
如何去保护一个人?(想要保护一个人就是让自
在空间资源短缺条件下,通过增加近期建设规划
偷情男人以前天天发信息,现在几天都不发了,我
推荐资讯
黑客来,怎么强制进去对方的QQ相册
古代尊师重道的典故有哪些,越多越好
丽都国际酒店-大堂吧地址在什么地方,想过去
思想陈旧的人叫什么(带动物名称)三个字
下图为2013年10月 16 日 8:00(北京时间)亚欧
潍坊雷沃阿波斯集团周六周日休班吗
铜钱埋在地下会下沉吗
潮汕话成田怎么说。。。。。
邮政银行本省跨市存取款要手费吗?
宠物情缘地址在哪,我要去那里办事
中国调查网是干嘛的
兴越汽贸有限责任公司地址在哪,我要去那里办
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?