编译链接5大潜规则
来源:互联网 发布:西王母国 知乎 编辑:程序博客网 时间:2024/06/01 09:55
转自:http://blog.csdn.net/zdl1016/article/details/9015447
潜规则1:
当一个符号在多个目标文件(.o)里同时出现时, LD报错. 提示符号多重定义.
当一个符号在多个静态库(.a)里同时出现时, LD不报错, 以第一个遇到的为准. 并且不会有任何warning提示 !!! 这个潜规则可能导致很多意想不到的问题!!!
潜规则2: LD对依赖库的输入顺序敏感.
LD在链接生成目标文件时, 会从左到有扫描输入的依赖库, 但是, 当依赖库之间也有依赖关系时,必须将”依赖别人的库”放在 “被别人依赖的库”的前面. 否则,会链接失败! 这点和vc++很不一样哦.
潜规则3:头文件搜索
gcc在寻找头文件时, 会按照一定的顺序在很多个目录挨个寻找, 一旦找到一个即停止寻找. 如果项目中存在多个同名的头文件, 则以第一个为准, 后面的直接忽略. 这个特性会导致很多编译不通过的问题!
GCC的寻找依赖的头文件顺序参看Bloghttp://blog.csdn.net/crylearner/article/details/17013187
潜规则 4 :
ld 会把所有通过-l指定的动态库全部链接进最终的目标程序中, 无论是否真的用到(导致生产环境加载失败)。
所以不需要的库就不要加入。
潜规则5:
假设我们知道undified symbol的符号确定存在xxx.a里面.虽然使用了Makefile里面加上了xxx.a的依赖, 但是, 一定要把xxx.a放在最后面. 因为有可能so依赖的其他的.a库也用到了xxx.a.否则极容易出现undifined symbol
- 编译链接5大潜规则
- GCC/LD编译链接潜规则
- 互联网5大潜规则
- 职场5大潜规则不可不知
- 混互联网圈的5大潜规则!
- 混互联网圈的5大潜规则!
- GCC/LD编译链接潜规则 (第一弹) : 当一个符号被多重定义时
- GCC/LD编译链接潜规则 (第五弹) : 为什么会有undified symbol?
- GCC/LD编译链接潜规则 (第五弹) : 为什么会有undified symbol?
- GCC/LD编译链接潜规则 (第二弹) : 为什么总链接失败? --LD对依赖库的输入顺序敏感
- 互联网行业五大潜规则
- 职场10大潜规则
- GCC/LD编译链接潜规则 (第三弹) : 当项目库中包含多个同名的头文件时.
- 潜规则
- 今天,你潜了吗?混互联网圈的5大潜规则!
- 中国IT业十大潜规则大曝光
- 中国IT业十大潜规则大曝光
- IT培训行业潜规则大揭秘
- 清除浮动大总结
- SAP HANA 10. Create an SQLScript Procedure with Imperative Logic
- 今天用GridView报错,找了好久才发现问题所在
- 20131129秒针系统算法面试
- java连接oracle数据库 -- 直接用jsp访问连接
- 编译链接5大潜规则
- 大数据串口传输
- 开源免费天气预报接口API(国家气象局提供)
- 【源码免费分享】99%的人都不知道的微信功能!
- 算法口诀
- exit与atexit
- wamp 403 禁止访问
- 如何解决word启动提示向程序发送命令出现问题
- ios下得到汉字拼音的方法比较