静态库使用
来源:互联网 发布:淘宝店铺远望手机 编辑:程序博客网 时间:2024/05/29 08:10
1. 代码
root@romulus-laptop:/work/test/archiveTest# cat a.c
#include<stdio.h>
void printA(){
printf("in method printA of a.c./n");
}
root@romulus-laptop:/work/test/archiveTest# cat main.c
int main() {
printA();
return 0;
}
2. 编译静态库
root@romulus-laptop:/work/test/archiveTest# gcc -c a.c // 生成目标文件a.o
root@romulus-laptop:/work/test/archiveTest# ar r liba.a a.o // 生成静态库lib.a
root@romulus-laptop:/work/test/archiveTest# ranlib liba.a // 创建静态库文件的索引来提供和该库链接的其他程序的编译速度
root@romulus-laptop:/work/test/archiveTest# nm liba.a // 显示静态库的索引,
a.o:
00000000 T printA
U puts
root@romulus-laptop:/work/test/archiveTest# nm a.o // 显示目标文件的符号
00000000 T printA
U puts
3. 生成二进制可执行文件。(为什么main.c中使用a.c中的函数不需要声明?)
root@romulus-laptop:/work/test/archiveTest# gcc -o main main.c liba.a // 使用静态库和源文件编译并链接成二进制可执行文件
root@romulus-laptop:/work/test/archiveTest# ./main
in method printA of a.c.
下面来解释:为什么main.c中使用a.c中的函数不需要声明?, 这和静态库无关的。。。
root@romulus-laptop:/work/test/archiveTest# cat b.c
#include<stdio.h>
void printA() {
printf("in method printA of b.c./n");
}
root@romulus-laptop:/work/test/archiveTest# gcc -o main main.c b.c
root@romulus-laptop:/work/test/archiveTest# ./main
in method printA of b.c.
4. gcc选项中可以直接使用.o文件代替源文件
root@romulus-laptop:/work/test/archiveTest# rm main
root@romulus-laptop:/work/test/archiveTest# gcc -o main main.c a.o
root@romulus-laptop:/work/test/archiveTest# ./main
in method printA of a.c.
- 静态库的使用
- 静态库使用
- 静态库的使用
- Curl 静态库使用
- Linux使用静态库
- Lua使用静态库
- 静态库制作,使用
- 使用Linux静态库
- 静态库使用
- Glog静态库使用
- DAY16_openssl静态库使用
- lame静态库使用
- 静态库的使用
- 使用lua静态库
- 使用windows静态库
- Linux 静态库使用
- 创建静态库,使用静态库
- 静态库-动态库 使用
- 以下几种程序员注定没有前途,不管你学C#还是C++...
- python pyc pyo
- ubuntu下Firefox无法安装flash player的解决办法
- 跨行业数据挖掘标准流程
- gpio模拟I2C总线c代码实现
- 静态库使用
- Dom4J操作Xml
- Php魔术函数学习与应用 __construct() __destruct() __get()等
- AC自动机算法详解
- c语言小知识汇总
- UIImageView,UIImage,CGContextRef
- 水妖开始捣蛋
- ZJUT1522 How many choices 容斥原理
- sql server中破解加密的存储过程 视图 等object的方法