Linux下gcc和动态静态库

gcc: 

 

静态库:

有sub.c add.c div.c mul.c ,将他们编译成静态库
gcc -c  *.c 
生成了相应 *.o 文件,使用ar打包.
ar rcs libCalc.a *.o
使用nm查看库信息
nm libCalc.a 
使用库:lib下存放libCalc.a,include 下存放头文件。
gcc main.c -o main -I include -L lib/ -lCalc

参考linux上静态库和动态库的编译和使用(附外部符号错误浅谈)

参考ar 命令 Linux ar命令

 

动态库:

有sub.c add.c div.c mul.c ,将他们编译成动态库,PIC与位置无关的
gcc -fPIC -c *.c -I include 
生成动态库
gcc -shared -o libCalc.so *.o
使用库:lib下存放libCalc.so,include 下存放头文件。
gcc main.c -o main -I include -L lib/ -lCalc

可以发现动态库生成的执行程序要比静态库小,可以使用ldd main 查看程序使用到的库。
怎么让可执行程序运行时找到制作的库。

  • 将生成的libCalc.so拷贝到/lib下,或者做成软连接(不推荐使用,可能会与其他人的库重名)
  • 设置环境变量LD_LIBRARY_PATH,/xxx/xxx/lib制作动态库的路径(不推荐使用)
    export LD_LIBRARY_PATH=/xxx/xxx/lib/:$LD_LIBRARY_PATH
  • 修改文件/etc/ld.so.conf添加自制的库路径(推荐使用)
    /xxx/xxx/lib
    立即生效sudo ldconfig -v

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值