一,静态库和动态库最本质的区别就是:这个库是否被编译进目标程序内部。
动态库(共享)库和静态库的最大不同就是:链接共享库时并不会把被调用的代码指令复制到调用模块中,而是将被调用的代码指令在共享库中的相对地址嵌入到调用模块中。
二,静态库的生成和调用步骤
1,静态函数库
一般扩展名为(.a或.lib),这类的函数库通常扩展名为libxxx.a(linux下)或xxx.lib (windows下)。这类库在编译的时候会直接整合到目标程序中,所以利用静态函数库编译成的文件会比较大,这类函数库最大的优点就是编译成功的可执行文件可以独立运行,而不再需要向外部要求读取函数库的内容;但是从升级难易度来看明显没有优势,如果函数库更新,需要重新编译。
2,静态库生成步骤
a.编写源程序xxx.c,如:vi add.c
b.只编译不链接生成目标文件xxx.o
如: cc -c add.c
c.生成静态库文件
ar -r/*插入*/ lib库名.a 目标文件名
ar -r libadd.a add.o
3,静态库调用步骤
a.编写测试源程序xxx.c,如:vi main.c
b.只编译不链接生成目标文件xxx.o
如: cc -c main.c
c.链接静态库文件生成可执行文件,链接方式有以下三种:
(1)直接链接
cc 目标文件 静态库文件名
如:cc main.o libadd.
本文详细介绍了静态库和动态库的区别、生成步骤及调用方法。静态库在编译时会被整合到目标程序中,生成的可执行文件独立运行,但体积较大。动态库(共享库)在运行时才加载,占用空间小,便于升级,但需依赖库文件。文章还涵盖了动态加载库的方法和注意事项。
订阅专栏 解锁全文
930

被折叠的 条评论
为什么被折叠?



