makefile的链接顺序
来源:互联网 发布:神盾局特工 知乎 编辑:程序博客网 时间:2024/04/29 23:17
1.
你有一个library或者是可执行文件,你可以这样查看他的依赖关系:
- readelf -d
- ldd工具
2.查看某个. c文件引用了那些头文件
gcc -M :查看引用的全部头文件(包括系统头文件)
gcc -MM :忽略系统头文件
3.对于library的查找
查找需要连接的符号名是从前向后找---即最后一个-l库文件最先调用;根据-L指定的路径顺序查找;
不同 目录下的同名的库,只取第一个(从左向右:即依次调用,最后一个生效的是最后调用:即最左边的),后面同名库被忽略;
g++ ... obj($?) -l(上层逻辑lib) -l(中间封装lib) -l(基础lib) -l(系统lib) -o $@
4:对于符号的查找
从左向右查找,如果是主程序块和静态库,不能定位地址就报错: ‘undefined reference to: xxx’
如果是链接成动态库,则假设该符号在load 的时候地址重定位。如果找不到对应的动态库,则会在load的时候报:“undefined symbol: xxx“这样的错误。
5.在项目开发过层中尽量让lib是垂直关系,避免循环依赖;越是底层的库,越是往后面写!
正常情况下lib库是不会依赖其他lib库的,除非是静态库或者其他固定公用的库,否则会出现移植程序的时候出bug;
而强制的依赖关系是显式的写明在Makefile中,使主程序知道lib库是由依赖关系的,而不是平行调用;
6.
0 0
- makefile的链接顺序
- makefile 的执行顺序
- Makefile中语句的顺序
- ld链接器的链接顺序
- 静态链接时链接库的顺序
- 规范化的链接样式顺序?
- 队列的顺序和链接
- 静态库的链接顺序
- 静态库的链接顺序
- makefile中库的顺序问题
- 程序的编译链接makefile写法
- Makefile详解-程序的编译和链接
- 链接css样式的书写顺序
- 链接静态库的顺序问题
- g++链接lib库时的顺序
- gcc 链接库的顺序问题
- 交叉编译静态库的链接顺序
- 使用LD链接时候文件的顺序
- TestNG监听器实现失败自动截图、重跑、自定义html结果文件功能
- C 程序结构
- 1.06-变量使用注意
- Java DEMO
- 1.07-变量使用注意2
- makefile的链接顺序
- rac两节点数据库多了一组redo
- Unity3D研究院之手游开发中所有特殊的文件夹
- 损失函数
- 设计模式学习笔记十三:模板方法模式
- 1.08-变量练习-交换变量的值
- Quartz.net
- Android 性能测试
- 博客开张之面试(2),MVC