gcc编译工具生成动态库和静态库之三----问题及重要知识点分析
来源:互联网 发布:cpda数据分析师 假 编辑:程序博客网 时间:2024/05/29 04:59
gcc编译工具生成动态库和静态库之三----问题及重要知识点分析
一、静态库生成方式
图1 源文件生成静态库
从图一可以看出,直接由源文件生成静态库,用工具ar生成工程中不会报错,但是用工具readelf读取该静态库,会发现该静态库不是 ELF文件;说明该中方式生成的静态库不能正常使用。
图2 对象生成静态库
从图2中可以看出,需要将源文件编译成可重定向文件后,方可利用ar工具将该文件生成静态库,并且生成的静态库可以用readelf工具读出相应信息。
图3 可重定向文件
根据图3可知,gcc -c xxx.c -o xxx.o 编译之后生成的文件为可重定向文件。
二、动态链接库和静态链接库同名
图4 静态库和动态库同名
根据图4可知,ldd工具可以判断库是静态库还是动态库,并且可以知道动态库中内部链接的动态库是否可以被链接器找到。
图5 运行可执行文件报错
ldd工具查看可执行文件就可以看出无法找到libsum.so动态链接库,所以运行该文件就报错:无法打开共享对象文件。
图6 修改LD_LIBRARY_PATH环境变量
通过将动态链接库路径导出到环境变量LD_LIBRARY_PATH中,动态库无法找到文件得到解决。
三、动态链接库同名
图7 动态链接库同名
从图7中可以看出,动态链接库不能同名,当一个执行文件需要同时使用到这两个同名库中的接口时,会出现异常。
四、执行文件大小
图8 执行文件大小
从图8可以看出,链接静态库明显比链接动态库体格变大,这也是动态库和静态库的区别,一般建议使用动态库,这样可以减少占用硬盘大小。
1 0
- gcc编译工具生成动态库和静态库之三----问题及重要知识点分析
- gcc编译工具生成动态库和静态库之二----实例
- linux下gcc编译生成静态及动态库
- gcc编译生成静态及动态链接库步骤
- gcc编译生成静态及动态链接库步骤
- gcc编译生成静态及动态链接库步骤
- gcc编译工具生成动态库和静态库之一----介绍
- gcc编译源码生成静态库和动态库
- Linux下Gcc生成和使用静态库和动态库及相关问题总结
- gcc生成静态库和动态库,及参数介绍
- gcc 编译及动态库和静态库
- gcc生成静态库和动态库
- GCC生成静态库和动态库
- GCC生成静态库和动态库
- GCC生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- gcc生成静态库和动态库
- 个人css总结
- Windos10安装Redis3.0 在java中通过Jedis使用Redis
- oracle rac启用归档模式
- java格式化数字DecimalFormat
- JQuery(入门一)
- gcc编译工具生成动态库和静态库之三----问题及重要知识点分析
- Eclipse出现Failed to load the JNI shared library jvm.dll错误的解决办法
- selectSort
- 个人借鉴网上爬虫代码改写的py
- 查看当前网站的cookie快捷方法
- ActiveMQ发布订阅模式
- MySQL的if,case语句使用总结
- Python 实例方法、@staticmethod和@classmethod
- jaxb的介绍,以及对jaxb的入门