静态库,动态库
2015-07-01 10:19
211 查看
一、格式说明
linux下编译,常会遇到后缀为:.o .so .a .la .ko等格式文件,尽管linux并不以扩展名作为识别文件格式的唯一依据,但规范约定还是有的,如下:.o 是目标对象文件,相当于windows中的.obj文件
.a 为静态库,可以是一个或多个.o合在一起,用于静态连接
.la 为libtool生成的共享库,其实是个配置文档。可以用$file *.la查看*.la文件,或用vi来查看。
.so 为共享库,类似windows平台的dll文件
补充: 还有一种扩展名为.ko 文件,不过它是Linux内核使用的动态链接文件后缀,属于模块文件,用来在Linux系统启动时加载内核模块。
二、创建实例
1、创建.o对象文件
$ gcc -c test.c生成test.o,跳过链接对象,所以不是可执行文件。
2、创建.a静态库文件
$ ar -r libtest.a test1.o test2.o3、创建动态库.so
$ gcc -Wall -fpic -shared test1.c test2.c -o libtest.so上一句执行,将test1.c和test2.c编译生成动态库文件libtest.so
4、链接库文件
$ gcc -Wall -fpic -shared -Ltest test3.c -o libtest.so编译test3.c后并与静态libtest.a链接(默认会到/usr/lib下找该文件)生成libtest.so动态库。
5、生成.la库
.la库一般通过makefile进行,当然也可以通过命令行进行,参考命令:$libtool --mode=link gcc -o libmylib.la -rpath /usr/lib –L/usr/lib –la
相关文章推荐
- [leetcode] 107.Binary Tree Level Order Traversal II
- iOS masonry设置六个等高等宽的view
- 浮点数转字符串函数fcvt和gcvt
- js判断访问来源
- 开源框架Tiny之内容组成
- 底价优化
- Activity的生命周期
- 找出一堆数中最小的前K个数
- 在Eclipse中配置Tomcat7.0
- 修改Nginx屏蔽网址的规则的方法
- Stratgy策略模式
- hdu 5208 Where is Bob
- Webrtc Intro - SCTP
- Qt第三方库QCustomPlot——认识图表的各个部分
- 广告中的去重选择
- github简单使用教程_GOOD
- iOS masonry动态约束控件位置
- JavaCard开发环境搭建
- Guice 学习(四)基本属性注入(Field Inject)
- 可变字符串用不了appendFormat 方法的时候