linux下静态库和动态库的建立及使用

静态库的制作:
1 将.c文件编译成.o文件
gcc -c fun1.c fun2.c
2 使用ar命令将.o文件打包成.a文件
ar rcs libtest1.a fun1.o fun2.o

静态库的使用:
1 main.c与head.h和libtest1.a在同一级目录的情况
gcc -o main1 main.c -I./ -L./ -ltest1
2 main.c与head.h和libtest1.a在不同一级目录的情况
gcc -o main1 main.c -I./include -L./lib -ltest1

动态库的制作:
1 将.c文件编译成.o文件
gcc -fpic -c fun1.c fun2.c
2 使用gcc将.o文件编译成库文件
gcc -shared fun1.o fun2.o -o libtest2.so

动态库的使用:
gcc -o main2 main.c -I./include -L./lib -ltest2
(注意:头文件默认查找目录:/usr/include,动态库默认查找目录:/usr/lib,当头文件及库文件所在目录为系统默认目录时,不需要指定-I和-L,否认必须指定)

ldd命令可以查看可执行文件依赖的库文件,执行ldd 可执行文件名,可以发现找不到的动态库
对于elf格式的可执行程序,是由ld-linux.so*来完成的, 它先后搜索elf文件的 DT_RPATH段 — 环境变量LD_LIBRARY_PATH — /etc/ld.so.cache文件列表 — /lib/, /usr/lib目录找到库文件后将其载入内存。
使用file命令可以查看文件的类型: file main

###运行提示动态库找不到怎么办?重要
1.sudo vi /etc/ld.so.conf,加入动态库路径,执行sudo ldconfig -v
2.最常用的解决办法:将LD_LIBRARY_PATH环境变量加到用户级别的配置文件~/.bashrc中,
然后生效(. ~/.bashrc 或者 source ~/.bashrc 退出终端然后再登录)
3.修改系统级别环境变量,vim /etc/profile,后,export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值