C语言--动态库和静态库

静态库
编译的时候把库中的代码加到目标程序中。
find  / -name *.a
ar -t  静态库的名字  ----》查看静态库的组成部分
步骤:
1、确定函数接口  函数名、参数、功能、返回值


2、由于库都是有.o文件组成的,需要生成.o文件
gcc -c add.c -o add.o
gcc -c sub.c -o sub.o
3、制作静态库
ar  crs   libmymath.a add.o sub.o
静态库以lib为前缀,中间是库的名称,以.a为后缀
c  创建
r  插入
s  索引
4、把编译好的静态库中的代码添加到目标程序中
gcc  main.c -o main  -L . -lmymath
其中-L指定库的路径,如何找到库  .表示当前目录
-l表示库的名称,也就是要使用的库是哪个? mymath




动态库(共享库)
运行的时候把库中的代码加到目标程序中
步骤:
1、确定函数接口  函数名、参数、功能、返回值


2、由于库都是有.o文件组成的,需要生成.o文件
gcc -fPIC -c add.c -o add.o
gcc -fPIC -c sub.c -o sub.o
-fPIC  指定位置无关的代码,可以让操作系统把共享库加载到内存中任意位置
3、制作动态库
gcc  -shared  -o libmysec.so add.o sub.o
动态库以lib为前缀,中间是库的名称,以.so为后缀
-shared  共享
4、运行时把编译好的共享库中的符号添加到目标程序中
gcc  main.c -o main  -L . -lmysec
其中-L指定库的路径,如何找到库  . 表示当前目录
-l表示库的名称,也就是要使用的库是哪个? mysec


三种执行方式:(选择其中一种方式即可)
1、 /lib   或者  /usr/lib
sudo cp libmysec.so /usr/lib


2、修改环境变量 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/linux/16091/p/dynamic 
如何删除环境变量中的内容:
export LD_LIBRARY_PATH=


3、添加配置文件(以绝对路径的方式添加)
sudo  vi /etc/ld.so.conf.d/filename.conf
sudo ldconfig


(1)共享库创建
(2)链接共享库

(3)加载共享库



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值