Linux环境下静态库的生成和使用 (.a文件)
来源:互联网 发布:jdk 7 linux x64.tar 编辑:程序博客网 时间:2024/05/08 07:17
An archive (or static library) is simply a collection of object files stored as a single file.(An archive is roughly the equivalent of a Windows .LIB file.) When you provide an archive to the linker, the linker searches the archive for the object files it needs, extracts them, and links them into your program much as if you had provided those object files directly.
You can create an archive using the ar command.Archive files traditionally use a .a extension rather than the .o extension used by ordinary object files. Here’ s how you would combine test1.o and test2.o into a single libtest.a archive:
% ar cr libtest.a test1.o test2.o
The cr flags tell ar to create the archive.
---摘自《AdvancedLinux Programming》
由上面可以看到,linux操作系统中,
1.静态库是一些目标文件(后缀名为.o)的集合体而已。
2.静态库的后缀名是.a,对应于windows操作系统的后缀名为.lib的静态库。
3.可以使用ar命令来创建一个静态库文件。
来看一个实例,根据书中的代码简化的,先看一看可以编译成库文件的源文件中的代码:
- /* test.c */
- int f()
- {
- return 3;
- }
代码非常简单,只有一句话。我们敲入如下命令:
gcc –c test.c
ar cr libtest.a test.o
会在当前目录下生成一个libtest.a静态库文件。-c表示只编译,不链接。再来看一看如何使用这个库。如下代码:
- /* app.c */
- #include <stdio.h>
- extern int f();
- int main()
- {
- printf(“return value is %d\n”,f());
- return 0;
- }
敲入如下命令:
gcc –c app.c
gcc -o app app.o -L. –ltest
敲命令的时候要记得将libtest.a文件和生成的app.o文件放在同一个目录(即当前目录)下。这样,敲入命令后,会在当前目录下生成一个名为app的可执行文件。-o表示指定输出文件名。执行一下./app,可以看一看结果:
这就是生成linux下面静态库的简单用法了。
- Linux环境下静态库的生成和使用 (.a文件)
- Linux环境下静态库的生成和使用 (.a文件)
- Linux环境下静态库的生成和使用 (.a文件)
- Linux环境下静态库的生成和使用 (.a文件)
- Linux环境下静态库的生成和使用 (.a文件)
- Linux环境下静态库的生成和使用 (.a文件)
- Linux环境下静态库和动态库的生成和使用 (.a文件和.so文件)
- Linux下静态库.a与.so库文件的生成与使用
- Linux下静态库文件和动态库文件的生成和使用
- windows环境下静态库的生成和使用 (.lib文件)
- Linux下生成静态库.a文件和动态库.so文件
- Linux下静态库生成和使用
- Linux下静态库.a文件生成方法
- Linux下静态库.a文件生成方法
- Linux环境下动态库的生成和使用 (.so文件)
- Linux环境下动态库的生成和使用 (.so文件)
- gcc下.a库文件的编译生成和使用
- Linux静态库的生成和使用
- 配置ionic环境
- leetcode 447. Number of Boomerangs
- TypeScript 2 : 获取当前日期及前后范围日期【Array】
- get方法传递参数时中文乱码的解决方法
- HTML特殊符号
- Linux环境下静态库的生成和使用 (.a文件)
- java 系列(一) 动态代理(中)
- 嵌入式系统开发概述,
- java环境变量配置——详细配置
- Recyclerview点击条目进行跳转,把position和具体的实体进行对应
- strcasecmp 函数
- shell if [ -d filename]
- jar导包先是复制到了lib文件下下面,为什么又要再导入到libraries里面
- ELKF之elasticsearch安装配置