C语言如何编译动态库与静态库
来源:互联网 发布:seo关键词的布局原则 编辑:程序博客网 时间:2024/05/05 08:53
关于动态库与静态库的作用这里就不在详细赘述了,重点说一下如何编译动态库与静态库及使用,一些大型的程序一般拥有着良好的架构,各个功能模块之间能够相互协调工作,达到预期的效果,但有的程序并不是所有的源码都是自己编写,特别像是用到芯片厂商的提供的库;能够把这些融合起来的就是需要提供的库;
原料:test1.c test2.c main.c
(详细的代码不再详细列出来,大家都是开发者,都希望用最短的时间找到想找的东西,而不是浪费太多的时间在细枝末节上)
1.如何编译动态库
gcc test1.c test2.c -shared -fPIC -o libtest.so
使用动态库
gcc main.c -L. -ltest -o a.out
(
-L : 表示需要库的路径
-l:表示需要库的名称,如libtest.so,名称则为test
)
(ps:执行a.out时有可能提示找不到libtest.so文件,这时需要把库文件放入到/lib等目录下,或者添加环境变量LD_LIBRARY_PATH,包含有库文件的路径即可)
2.如何编译静态库
gcc -c test1.c test2.c
ar -r libtest.a test1.o test2.o
使用静态库
gcc main.c -static -L. -ltest -o a.out
(
-static:可强制编译时使用静态库,如果不使用这个参数,而静态库与动态库同名的话,会优先使用动态库
)
3.静态库与动态库
在可执行程序执行条件上,使用静态库编译时,生成的执行文件就不再依赖.a静态库文件,而使用动态库编译的执行文件必须包含.so库文件才能运行;
在可执行程序的执行速度上,静态编译的文件会优于动态编译(毕竟静态编译把库文件的代码都编译到执行文件,与动态编译不同在执行动态库中函数时才会去路径下的动态库中寻找链接);
在可执行程序的大小上,静态编译后的文件大小比动态编译的文件大很多;如果对内存要求较高的可选择用动态编译,虽然会慢一点;
在修改库之后,静态编译的文件需要再把静态库和原main.c文件都重新编译才能使用,而动态编译的文件不需要再编译main.c,只需要把新编译的动态库覆盖原来的动态库,再重新运行可执行文件即可生效;相比于编译一个大型工程需要一两小时,动态库的优势就不必多言了;
- C语言如何编译动态库与静态库
- C语言编译动态或者 静态库
- c语言:静态库与动态库
- 如何生成静态库动态库-c语言
- 重温C语言 - 静态库与动态库
- c语言共享代码之静态库与动态库
- C语言之静态库与动态库学习笔记
- 静态库与动态库及交叉编译总结及学习较底层编程:动手写一个C语言编译器
- C语言(Head First C)-9_1:静态库与动态库:静态库
- linux 如何编译 静态库,动态库
- C语言(Head First C)-9_2:静态库与动态库:动态库
- C语言静态库动态库
- C语言--动态库和静态库
- gcc编译动态库与静态库
- 【C语言】linux下静态库和动态库的编译
- 动态库和静态库在编译C语言时使用方法简述
- 1linux gcc命令以及c语言动态库静态库编译
- 【C/C++】动态库与静态库
- DistanceTransform(距离变换)
- JavaScript总结-细节
- Java基础知识-6、数组
- [知识池]彻底了解设计模式(系列四)
- 常用布局效果07-文本信息展示布局
- C语言如何编译动态库与静态库
- Linux下使用inotify实现文件监控
- 51nod 1642 区间欧拉函数
- 欢迎使用CSDN-markdown编辑器
- 【修改版本】Python调用C函数,cffi (附具体例子)
- JavaScript定义类或对象
- C++知识点
- 集成学习(Ensemble)
- CCF 中间数