linux的常用操作——静态库

1.静态库的制作
1.1静态库的命名

\qquad 静态库一律使用lib打头,静态库名为:lib+静态库的名字+.a。比如:libmylibrary.a,这里面lib和.a是必须要有的。使用nm命令可以查看静态库。

nm 静态库名
1.2静态库的制作步骤

\qquad 第一步:将.c文件生成.o文件,比如将hello.c转变为hello.o文件。

gcc -c hello.c -o hello.o

\qquad 或者

gcc hello.c -c

\qquad 第二步:使用ar将生成的.o文件打包

ar rcs 静态库的名字 生成的所有.o文件
1.3发布和使用静态库
gcc filename.c 静态库的路径/静态库名 -o 可执行文件名 -I 头文件的路径

\qquad 或者

gcc filename.c -I 头文件路径 -L 静态库路径 -l 静态库名 -o 可执行文件名
2.静态库的优缺点
2.1静态库的优点

\qquad 1.发布的程序,即编译完成后的可执行文件,不再需要库函数。
\qquad 2.加载库的速度快

2.2静态库的缺点

\qquad 1.库被打包到应用程序中,导致应用程序体积变大。
\qquad 2.库如果发生了改变,需要重新编译。

3.静态库制作实例
  1. 源代码目录
zhaoxr@zhaoxr-ThinkPad-E450:~/linux$ tree
.
├── head
│   ├── add.h
│   └── mul.h
├── lib
│   ├── main.c
│   └── mul.c
└── source
    └── add.c

3 directories, 5 files
  1. 生成静态库

这里的静态库不包含主函数的.c文件,只是把实现打包成静态库,

首先将功能模块的.c文件编译为.o文件,

zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -c add.c -o add.o
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ gcc -c mul.c -o mul.o
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$ ar rcs libmylib.a add.o mul.o
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/lib$ tree
.
├── add.c
├── add.o
├── libmylib.a
├── mul.c
└── mul.o

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

3 directories, 9 files
zhaoxr@zhaoxr-ThinkPad-E450:~/linux/source$ ./app 
a+b=19,a*b=90
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值