Linux制作静态链接库
来源:互联网 发布:七参数计算软件 编辑:程序博客网 时间:2024/05/21 14:46
库是一种软件组件技术,库里面封装了数据和函数。
Linux库文件通常存放在/usr/lib或/lib目录下。
Linux静态库文件名组成: 前缀lib、库名和后缀.a组成(‘lib*.a’)。
静态库的代码在编译时就拷贝的应用程序中,这样的优点是节省编译时间,当要使用时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。
静态库是obj文件的一个集合,通常静态库以“.a”为后缀,它的优点是可以在不用重新编译程序库代码的情况下,进行程序的重新链接,这种方法节省了编译过程的时间(在编译大型程序的时候,需要花费很长的时间)。但是由于现在系统的强大,编译的时间已经不是问题。静态库的另一个优势是开发者可以提供库文件给使用的人员,不用开放源代码,这是库函数提供者经常采用的手段。当然这也是程序模块化开发的一种手段,使每个软件开发人员的精力集中在自己的部分。在理论上,静态库的执行速度比共享库和动态库要快(1%~5%)。
//filename:fun.c#include <stdio.h>void fun(void) { printf("XiyouLinuxGroup\n");}
//filename:main.c#include <stdio.h>//声明函数,可以把所有的声明放到一个"*.h"文件中,然后主函数包含它就可以void fun(void);int main(void) { printf("hello universe\n"); fun(); return 0;}
1.编译生成目标文件
gcc -c fun.c//生成fun.o文件
2.用ar归档目标文件,生成静态库
//库文件名格式必须为lib*.aar rcsv libfun.a fun.o//生成libfun.a,可以将此文件拷到/usr/lib或/lib目录下
3.使用静态库时记得链接自己的库
gcc main.c -static -L. -lfun -o main//生成可执行文件main//如果不加-o main,会生成a.out文件gcc -o main main.c libfun.a//效果和上面相同gcc main.c -static -L. -lfun //会生成a.out文件
Note:
-static : 当有动态库和静态库重名时,强制链接静态库
库的文件名必须形如 lib*.a ,这样我们在链接这个库时,就可以用 -l*。
编译器就会在指定的目录中搜索 lib*.a 。
上面的命令中 -L. 告诉 gcc 搜索链接库时包含当前路径, -l* 告诉 gcc 生成可执行程序时要链接 lib*.a
常用选项:
c 创建一个库,如果需要生成新的库文件,不要警告
v 输出详细信息
d:从库中删除成员文件。
r:在库中加入成员文件,若存在,则替换。
s:无论ar命令是否修改了库内容,都强制重新生成库符号表。
4.运行程序
- Linux制作静态链接库
- Linux下制作静态链接库
- Linux下静态链接库的制作与使用
- Linux下静态链接库的制作与使用
- Linux下静态链接库的制作与使用
- OpenCV制作静态链接库
- 如何制作及链接静态链接库。
- 如何制作及链接静态链接库
- linux-静态链接库
- linux静态库制作
- VC中制作一个静态链接库
- vs为嵌入式制作静态链接库
- Xcode6制作静态链接库和framework
- 制作静态链接库并使用
- Linux制作动态链接库
- 在linux下制作静态库和动态链接库的方法
- Linux静态/动态链接库
- Linux下静态链接库
- Java中常用知识
- 加载不同dpi目录下图片产生的内存消耗不一样
- gyp
- 闲谈Tomcat性能优化
- PVR图像文件格式初探
- Linux制作静态链接库
- 关于全文搜索elasticsearch中matchQuery和termQuery的区别
- 机器学习笔记第1周
- Android之基于RecycleVew的相册选择器
- OKHTTP网络请求——上传下载
- React Native Windows安卓开发所需配置
- 关闭IE开发人员工具的方法
- 返回类型是枚举
- 设计模式-2、单例模式