Linux动态库静态库的生成

动态库静态库的生成

函数库:
1、便于移植,方便使用
2、保密, 保护知识产权

静态库:编译生成静态库
编译生成静态库:
1、把.c文件编译生成.o文件

gcc -c add.c 或gcc add.c -c -o add.c

2、把.o文件编译生成.a静态库

ar -rc libadd.a add.o

3、静态库的使用

gcc main.c libadd.a -o project

gcc main.c -o project libadd.a

gcc main.c -o project -I./include -L./lib -ladd

4、执行文件

./project

动态库:编译生成动态库
1、把.c文件编译生成.o动态库

gcc -fgic -shared add.c -o libadd.so

2、动态库的使用:

> `gcc main.c -o project libadd.so
> 
>  gcc main.c -o project -I./include -L./lib -ladd`
>  (-I./include 表示连接头文件,-L./lib 表示连接动态库,-ladd表示去掉动态库文件前缀lib和后缀.so)

3、执行二进制文件时:
./project
如果出现以下错误:

 ./main: error while loading shared libraries: libadd.so: cannot open shared object file: No such file or directory

解决方法:
(0)编译过程中指定动态库路径

gcc demo.c libsum/sum.c -o demo -I./libmax -L./libmax -lmax -Wl,-rpath=./libmax

如果需要指定多个路径,使用冒号 : 作为分隔符

gcc demo.c -o demo -Wall -I./libmax -L./libmax -lmax -I./libsum -L./libsum -lsum -Wl,-rpath=./libmax/:./libsum/

(1)永久设置需要把add.so拷贝到/lib(注意:这种方法不推荐,会污染到原来系统自带的动态库环境)

cp libadd.so /lib

(2)临时设置环境变量LD_LIBRARY_PATH:
期嵌入式直播10班/02Linux基础/02/code/test_动态库
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/GZ2019期嵌入式直播10班/02Linux基础/02/code/test_动态库
(3) 永久设置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/hgfs/GZ2019期嵌入式直播10班/02Linux基础/02/code/test_动态库加入到配置文件 ~/.bashrc
注意:LD_LIBRARY_PATH告诉编译器去哪个路径下找动态库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值