Linux下静态库的生成以及使用实例图解
来源:互联网 发布:淘宝贷款能贷多少 编辑:程序博客网 时间:2024/06/05 16:25
首先介绍一些gcc常用的选项:
选项
作用
-o
产生目标(.i、.s、.o、可执行文件等)
-c
通知gcc取消链接步骤,即编译源码并在最后生成目标文件
-E
只运行C预编译器
-S
告诉编译器产生汇编语言文件后停止编译,产生的汇编语言文件扩展名为.s
-Wall
使gcc对源文件的代码有问题的地方发出警告
-Idir
将dir目录加入搜索头文件的目录路径
-Ldir
将dir目录加入搜索库的目录路径
-llib
链接lib库
-g
在目标文件中嵌入调试信息,以便gdb之类的调试程序调试
静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库;
静态库的生成:用myprint.h 和 myprint.c 生成静态库libmyprint.a,然后用main.c使用该静态库;
myprint.hvoid myprint(int num);myprint.c
#include <stdio.h> void myprint(int num) { printf("my num is %d\n", num); }
main.c
#include<stdio.h> #include "myprint.h" int main() { myprint(100); myprint(1000); return 0; }第一步:生成myprint.o文件;使用命令,gcc -c myprint.c -o myprint.o
第二步:将生成的myprint.o文件打包成静态库myprint.a文件;使用命令 ar rcs libmyprint.a myprint.o
可以使用命令file 文件查看文件类型;使用命令nm 查看静态库中的函数名称;
此时已经生成了静态文件libmyprint,可以将myprint.c文件删除;myprint.o也没有用了,也删除;
第三步:使用生成的静态库;
如果直接输入命令gcc main.c -o main 会提示错误,没有链接静态库,所以会报错
用-l来链接静态库;输入命令gcc main.c -o main -lmyprint 结果还是报错,没有找到该库文件,应该指定库文件的路径;
用-L来指定当前路径;输入命令gcc main.c -o main -lmyprint -L.;运行成功,生成了可执行文件main,运行main正常;
如果我把myprint.h放在inc目录下,把myprint.c, main.c放在src目录下;将生成的静态库libmyprint.a放在lib目录下;将生成的可执行文件main放在bin目录下;
第一步:生成myprint.o文件到lib目录下;
第二步:生成myprint.a静态库文件到lib目录下;
此时myprint.c和myprint.o已经没有用了;
第三步:使用静态库生成可执行文件main到目录bin下;注意需要用-I指定头文件目录
0 0
- Linux下静态库的生成以及使用实例图解
- Linux下静态库的生成以及使用实例图解
- Linux系统下Qt动态库的生成已经动态库的使用实例图解
- Linux下动态库、静态库的生成与使用
- linux下Tinyxml使用之静态库的生成
- Linux下静态库生成和使用
- Linux的Terminal中如何生成静态库以及如何使用静态库
- linux下静态链接库的生成
- 一个使用第三方静态库(*.a)的jni实例以及 ndk 使用第三方静态库生成动态库的实例
- linux中静态库和动态库的生成以及使用
- linux静态库的生成与使用
- linux静态库的生成与使用
- linux静态库的生成与使用
- linux静态库的生成与使用
- Linux静态库的生成和使用
- linux 静态库的生成与使用
- Linux 创建静态库以及静态库的使用
- Linux 创建静态库以及静态库的使用
- 随笔分类
- 连接池中MySQL与Oracle的小差异
- 史上最简单设置沉浸式状态栏。三句话搞定。
- Android 解决WebView 支持WebGL兼容性问题
- Mentor.Graphics.DesignAnalyst 2005.1 1CD
- Linux下静态库的生成以及使用实例图解
- 设置一个网站下面iframe只能在该域名下访问
- Java Web 基础 --- Filter 综述
- Qt添加库文件方法
- pixhawk篇之坐标系转化,相关转化矩阵知识,算法截取
- iOS Block传值
- How browsers work--Behind the scenes of modern web browsers (前端必读)
- 使用Storm实现实时大数据分析
- 基于hadoop2.6.0的hive-1.2.1安装