linux下.a/.so/.la目标库区别
来源:互联网 发布:假币在淘宝里叫什么 编辑:程序博客网 时间:2024/06/16 04:56
转自:http://www.metsky.com/archives/604.html
在linux平台上编译时,常会遇到目标库的疑问,有静态库也有动态库,单个理解都不太难,但是对复杂的工程而言,一旦混合到一起去,对整个工程的理解和调用,将会造成很大困扰,本文就汇总这几种常见编译结果文件的区别。
一、格式说明
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.o
3、创建动态库.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
libtool将会搜索libmylib.a文件,并传家libmylib.la。
更多libtool帮助:
libtool --help
- linux下.a/.so/.la目标库区别-转
- linux下.a/.so/.la目标库区别
- centos7 .a/.so/.la目标库区别
- Linux下.o .so .a .la
- Linux .so .a .la 库
- Linux下.ko, .o, .so, .a, .la文件
- linux下的so、o、lo、a、la文件
- linux下的so、o、lo、a、la文件
- linux下的so、o、lo、a、la文件区别
- Linux下的.o,.so,.a,.la文件的整理
- Linux下.ko, .o, .so, .a, .la文件
- Linux下.ko, .o, .so, .a, .la文件
- Linux下.ko, .o, .so, .a, .la文件
- Linux下.ko, .o, .so, .a, .la文件
- Linux下.ko, .o, .so, .a, .la文件
- Linux下.ko, .o, .so, .a, .la文件
- Linux下.ko, .o, .so, .a, .la文件
- Linux下的.o,.so,.a,.la文件的整理
- 顺时针旋转矩阵
- Qt中通过设置位图掩码生成异形控件【附源码】
- Java编程规范——重点摘要
- SPFA算法
- 在实际文件中分析h264
- linux下.a/.so/.la目标库区别
- canvas中的清空画布
- CentOS7安装zookeeper3.5.2
- ORACLE恢复删除表或表记录
- 文本的输入&输出
- jQuery实现多选框的全选按钮自动选中与消失
- ubutun14.10上安装ssh
- 【ElasticSearch】Helloworld(一)
- 在centos 7上安装zabbix server3.0和zabbix agent