首页 > 代码库 > Linux静态库逐步详解
Linux静态库逐步详解
一 源文件
下载有如下两个源文件:
/* bill.c */ #include <stdio.h> void bill(char* arg) { printf("bill: we passed %s\n", arg) ; }
/* fred.c */ #include <stdio.h> <pre name="code" class="cpp">void fred(int arg){ printf("fred: we passed %d\n", arg) ;}
编译生成.o文件:
gcc -c *.c
二 头文件
添加一个头文件,声明上述两个函数,用于静态库调用时使用。
/* lib.h */ void bill(char *) ; void fred(int) ;
三 主程序
/* main.c */ #include <stdlib.h> #include "lib.h" int main() { bill("Hello World") ; exit(0) ; }
四 运行
gcc -c main.c
gcc -o main main.o bill.o
这样就可以生成一个可执行文件main了。
但是这样不是太方便,加入有很多.o文件的话,每次都需要写一大篇,很是麻烦,
因此,就有了静态库。静态库就是将.o文件打包成一个.a文件
五 生成静态库
ar crv libfoo.a bill.o fred.o
这样就得到了一个libfoo.a文件。
六 使用静态库
gcc -o main main.o libfoo.a
另一种方式更为常用:
gcc -o main main.o -L. -lfoo
-L是指定库文件的路径,"."表示当前文件下。
-l是指定库文件名为foo,即libfoo.a,Linux下静态库的命名规则为libxxx.a
七 查看静态库中的文件
可是使用nm命令查看可执行文件和.o文件中包含的函数,例如:
nm libfoo.a
或者
nm main
Linux静态库逐步详解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。