C语言之函数库的制作与使用

C语言之函数库的制作与使用

函数库制作与使用是学习编程最基本的技能,今天我们就学习一下静态函数库和动态函数库的制作。

Linux 操作系统支持的库函数分为:静态库和动态库,他们的区别如下:

静态函数库是程序编译时加载到程序中,使用库的程序可独立运行,不受任何影响。
动态函数库在程序编译时不会加载到程序中,需要在程序运行的时候链接到库,因此使用库的程序不可独立运行。

具体区别:

静态库动态库
命名格式libxx.alibxx.so
加载方式编译时运行时
优点无依赖,可独立运行可执行程序比较小
缺点可执行程序会比较大需要依赖,无法独立运行

制作及使用方法

静态库:

制作流程:

1.生成目标文件:gcc -c file.c -o file.o

2.创建静态函数库:ar -cr libfile.a file.o
-c:create
-r:replace
当插入的模块 file.o 已经存在 libfile.a 中,则覆盖,反之 ar 显示一个 错误消息

3.查看静态库文件:ar -t libknown.a 显示静态库包含的模块

使用流程:

静态库的编译:gcc -o main main.c -L. -l file

编译后 main.c 就会把静态函数库整合进 main
-L 指定静态函数库的位置
“.”表示在当前目录
-l 指定了静态数据库名
静态数据库格式是 libxxxx.a,编译时将其中 lib 和 a 都省略掉。

动态库

制作流程:

1.生成目标文件:gcc -c file.c -o file.o

2.创建动态函数库:gcc -shared -fpic -o libfile.so file.o
-fpic : 产生位置无关代码
-shared:生成共享库

使用流程:

动态库的编译:gcc -o main main.c -L. -lfile
解释如上

注意:

此时还不能立即运行程序,因为动态库在使用时默认会查找 /usr/lib 和 /lib 目录下的动态函数库,此时我们生成的库还不在里面。

解决办法:

一、把 libfile.so 放进目录中即可

二、修改环境变量
增加:export LD_LIBRARY_PATH=/位置:
查看:echo $LD_LIBRARY_PATH

三、修改配置脚本
/etc/ld.so.conf
该配置脚本存放的是连接器和加载器搜索共享库时检查的目录,默认是 /usr/lib 和 /lib 的,在其中增加你自己的库的路径。

最后,完成了以上任一解决办法,最好重新运行一下 /sbin/ldconffig脚本,以防找不到动态库

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值