Linux动态链接和静态链接

本文详细介绍了如何使用GCC生成静态链接库和动态链接库,并提供了拷贝库到特定目录、编译使用链接库的程序、运行程序以及解决库位置问题的方法。此外,还讲解了动态库和静态库的存放位置问题,以及如何同时使用动态和静态链接库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.生成静态链接库
<wbr><wbr><wbr>gcc -c h.c -o h.o<br><wbr><wbr><wbr>ar cqs libh.a h.o<wbr><wbr><br><wbr><wbr><wbr>//ar是生成库的命令,cqs是参数,libh.a是生成的静态链接库须以lib开头,h是库名,a表示是静态链接库,h.o是刚才生成目标文件<br> 2.生成动态链接库<br><wbr><wbr><wbr>gcc -c h.c -o h.o<br><wbr><wbr><wbr>生成动态链接库用gcc来完成<br><wbr><wbr><wbr>gcc -shared -WI -o libh.so<wbr>h.o<br><wbr><wbr><wbr>//-shared -WI是参数,libh.so是生成的静态链接库须以lib开头,h是库名,so表示是动态链接库,h.o是刚才生成目标文件<br> 3.将生成的libh.a,libh.so拷贝到/usr/lib或/lib下<br> 4.编译带静态链接库的程序<br><wbr><wbr><wbr>gcc -c test.c -o test.o<br><wbr><wbr><wbr>gcc test.o -o test -WI -Bstatic -lh<br><wbr><wbr><wbr>//-WI -Bstatic表示链接静态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.a<br> 5.编译带动态链接库的程序<br><wbr><wbr><wbr>gcc -c test.c -o test.o<br><wbr><wbr><wbr>gcc test.o -o test<wbr>-WI -Bdynamic -lh<br><wbr><wbr><wbr>//-WI -Bdynamic表示链接动态库,-lh中-l表示链接,h是库名即/usr/lib下的libh.so<br> 6.运行./test得到结果<br> 7.其他知识<br><wbr><wbr><wbr>有些库形如libh.so.1.0,1.0表示版本号.若要使用该库,通常要建立一个软连接,用ln -s libh.so.1.0 libh.so.系统不知道1.0为何意思。<br><wbr><wbr><wbr>编译连接时同时要用动态和静态链接库,则用如下命令<br><wbr><wbr><wbr>gcc test.o -o test -WI -Bstatic -lh1 -WI -Bdynamic -lh2</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

8.动态库和静态库的位置问题

<wbr><wbr><wbr>把动态库或者静态库放在/usr/lib或者/lib下,在链接的时候系统会自动到这两个目录下寻找。如果没有放在这两个目录下,则修改/etc/ld.so.conf文件,把目录写入该文件,然后ldconfig,就OK了。</wbr></wbr></wbr>

<wbr><wbr><wbr>如果没有放在usr/lib或者/lib目录下,也不修改/etc/ld.so.conf文件,也可以在编译的时候加上 -L/路径<wbr>也可以。但是在执行的时候还是会提示找不到库的所在。</wbr></wbr></wbr></wbr>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值