linux 怎么指定静态链接静态库

linux 怎么指定静态链接静态库,第1张

创建静态库: ar -rcs test.a *.o 查看静态库: ar -tv test.a 解压静态库: ar -x test.a 查看程序依赖的动态库: readelf -a xxx|grep library 如:可以看到,下面的交叉程序hello执行依赖于如下两个动态库。 rebi@ubuntu:~/test$ arm-none-li...

Linux的静态库文件并不需要设置啊,编译链接.a静态库文件时只需要加上.a文件的完整路径就可以了,比如:

gcc -o hello hello.c /usr/lib/libm.a

只有编译链接动态库才需要用-L选项来设置动态库的搜索路径,比如这个命令:

gcc -o hello hello.c -L/usr/openssl/lib -lcrypto

linux动态链接和静态链接简析1.生成静态链接库gcc

-c

h.c

-o

h.oar

cqs

libh.a

h.o//ar是生成库的命令,cqs是参数,libh.a是生成的静态链接库须以lib开头,h是库名,a表示是静态链接库,h.o是刚才生成目标文件2.生成动态链接库

www.zhishiwu.com

gcc

-c

h.c

-o

h.o生成动态链接库用gcc来完成gcc

-shared

-WI

-o

libh.so

h.o//-shared

-WI是参数,libh.so是生成的静态链接库须以lib开头,h是库名,so表示是动态链接库,h.o是刚才生成目标文件3.将生成的libh.a,libh.so拷贝到/usr/lib或/lib下4.编译带静态链接库的程序gcc

-c

test.c

-o

test.ogcc

test.o

-o

test

-WI

-Bstatic

-lh//-WI

-Bstatic表示链接静态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.a5.编译带动态链接库的程序gcc

-c

test.c

-o

test.ogcc

test.o

-o

test

-WI

-Bdynamic

-lh//-WI

-Bdynamic表示链接动态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.so6.运行./test得到结果

www.zhishiwu.com

7.其他知识有些库形如libh.so.1.0,1.0表示版本号.若要使用该库,通常要建立一个软连接,用ln

-s

libh.so.1.0

libh.so.系统不知道1.0为何意思。编译连接时同时要用动态和静态链接库,则用如下命令gcc

test.o

-o

test

-WI

-Bstatic

-lh1

-WI

-Bdynamic

-lh28.动态库和静态库的位置问题把动态库或者静态库放在/usr/lib或者/lib下,在链接的时候系统会自动到这两个目录下寻找。如果没有放在这两个目录下,则修改/etc/ld.so.conf文件,把目录写入该文件,然后ldconfig,就OK了。如果没有放在usr/lib或者/lib目录下,也不修改/etc/ld.so.conf文件,也可以在编译的时候加上

-L/路径

也可以。但是在执行的时候还是会提示找不到库的所在。

作者

llg521208


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8692640.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-20
下一篇2023-04-20

发表评论

登录后才能评论

评论列表(0条)

    保存