Linux 库 创建自己的静…

库:一组实现好的函数接口

Linux 库: 静态库   和 动态库 


一.gcc的特性

1.默认搜索库的路径 /usr/lib 和 /lib
2.默认搜索头文件的路径 /usr/include 

------------------------------------------
1.指定gcc搜索库的路径:   -L 库的路径
注意:gcc默认在链接库的时候只能认识自带的库,第三库不能识别,如果想识别第三库需要加
      -l库名   来指定链接的库

2.指定gcc头文件的搜索路径: -I 库的路径 


二. 静态库 

静态库命名 : libname.a ,其中库名字是name

注意:链接静态库的时候,会把对应函数的实现代码也链接到程序中,生成可执行文件体积大,
程序运行的时候不需要库的支持

(1)制作静态库

1.将.c文件变成.o 
gcc -c file.c -o file.o 

2.将.o文件变成库 
ar -cr libname.a   *.o

三.动态库

动态库命名 : libname.so,其中库名字是name 

注意:链接动态库的时候,不会将对应函数的实现代码链接到程序中,只记录这个程序所依赖库的名字,
生成可执行文件体积小,程序运行的时候需要库的支持

(1)察看可执行所依赖的库 

readelf -a 可执行文件 | grep "Shared"

(2)制作动态库
1.将.c文件变成.o 
gcc -c -fpic   file.c -o file.o 

-fpic 生成地址无关的指令

2.将.o文件变成库 
gcc   -shared   *.o -o libname.so 

(3)OS加载库搜索的路径
1.在LD_LIBRARY_PATH环境变量下搜索

添加环境变量:export LD_LIBRARY_PATH=路径1:路径2:...:$LD_LIBRARY_PATH 
永久添加:/etc/profile 或 /etc/bash.bashrc 

2.在/etc/ld.so.cache文件中搜索

a.在/etc/ld.so.conf.d目录下新建配置文件,添加库所在的路径
b.ldconfig命令生效添加的路径

3.在/lib 或 /usr/lib 目录搜索

四 动态库和静态库同时存在 

如果动态库和静态库同时存在,gcc默认链接动态库,如果想让gcc去链接静态库需要加-static参数 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值