linux的常用操作——共享库

1.共享库的命名规则

\qquad 共享库,即动态库。库名: lib+库名+.so

2.共享库的制作
2.1生成与位置无关的.o文件
gcc -fpic -c filename.c -I 头文件路径
2.2生成共享库
gcc -shared -o 共享库名 要打包的.o文件 -I 头文件路径
2.3生成可执行文件
gcc filename.c 动态库路径/库名 -o 可执行文件名 -I 头文件路径
3.动态库无法被加载

\qquad 查看可执行文件动态库加载情况

ldd 可执行文件

\qquad 需要找动态连接器的配置文件 ld.so.conf

sudo vim /etc/ld.so.conf

\qquad 动态库的绝对路径写到配置文件中
\qquad 更新——sudo ldconfig

4.动态库实例
  1. 目录结构
zhaoxr@zhaoxr-ThinkPad-E450:~/linux$ tree
.
├── head
│   ├── add.h
│   └── mul.h
├── lib
│   ├── add.c
│   └── mul.c
└── source
    └── main.c

3 directories, 5 files
  1. 制作动态库

生成与位置无关的.o文件

zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -fpic -c mul.c add.c -I ../head/
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ tree
.
├── add.c
├── add.o
├── mul.c
└── mul.o

0 directories, 4 files

生成动态库

zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -shared -o libmylib.so mul.o add.o -I ../head/
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ tree
.
├── add.c
├── add.o
├── libmylib.so
├── mul.c
└── mul.o

0 directories, 5 files
  1. 生成可执行文件
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ gcc main.c ../lib/libmylib.so  -o app -I ../head/ 
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ tree
.
├── app
└── main.c

0 directories, 2 files
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ ./app 
a+b=19,a*b=90
5. 动态库的优缺点

\qquad 优点:执行程序的体积小;动态库更新了,不需要重新编译程序。
\qquad 缺点:发布程序时,需要把动态库提供给用户;动态库没有加载到应用程序中,所以加载速度会比静态库慢一些。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值