静态库
2016-06-14 09:23
330 查看
静态库可以认为是一些目标代码的集合,即对多个目标代码归档到一个文件中。命名一般以”lib“开头,以”.a“结尾,如“libmycal.a”。静态库相比于动态库存在的优点是:引用了静态库的代码进行编译链接后,会将静态库的副本包含进应用程序中,这样在别的机器上运行时,就不用担心找不到库了。缺点就是:当多个应用程序调用相同的静态库时,内存中会有多个静态库的副本被载入,每个库归相应的应用程序调用,消耗内存。
演示生成静态库
1) 查看文件目录
2) 生成静态库
使用静态库
演示生成静态库
1) 查看文件目录
#tree . ├── main.c └── src ├── add.c ├── common.h ├── dive.c ├── mul.c └── sub.c
2) 生成静态库
#mkdir lib #ls lib main.c src #cd src/ # ls add.c common.h dive.c mul.c sub.c //生成目标文件(.o) #gcc -c -fPIC *.c #ls add.c add.o common.h dive.c dive.o mul.c mul.o sub.c sub.o //生成静态库libmycal.a #ar rcs libmycal.a *.o # ls add.c add.o common.h dive.c dive.o libmycal.a mul.c mul.o sub.c sub.o //查看静态库中包含的信息 #nm libmycal.a add.o: 0000000000000000 T add dive.o: 0000000000000000 T dive mul.o: 0000000000000000 T mul sub.o: 0000000000000000 T sub //移动静态库到lib目录中 #mv libmycal.a ../lib #cd .. #lib main.c src lib main.c src #tree . ├── lib │ └── libmycal.a ├── main.c └── src ├── add.c ├── add.o ├── common.h ├── dive.c ├── dive.o ├── mul.c ├── mul.o ├── sub.c └── sub.o 2 directories, 11 files
使用静态库
// -I指定头文件目录,注意-I和之间没有空格 #gcc -Isrc main.c lib/libmycal.a -o app #./app 9 注意:ldd命令只是检测动态库,不能检测静态库。
相关文章推荐
- Linux socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍