当前位置: 移动技术网 > IT编程>开发语言>C/C++ > c++ linker warning: defined in discarded section

c++ linker warning: defined in discarded section

2018年09月14日  | 移动技术网IT编程  | 我要评论

忘情仙劫,赵文波简历,触手游戏下载

c++ linker warning: defined in discarded section。

/usr/bin/ld: .gnu.linkonce.t._zn5boost8signals25slot0ivns_8functionifvveeeed1ev' referenced in section.gnu.linkonce.r._zn5boost8signals25slot0ivns_8functionifvveeeed1ev’ of ./libut_doraemon.a(ut_doraemon_city_id_data_handler.o): defined in discarded section `.gnu.linkonce.t._zn5boost8signals25slot0ivns_8functionifvveeeed1ev’ of ./libut_doraemon.a(ut_doraemon_city_id_data_handler.o)

以上是我遇到的编译warning

经网上搜索发现这是gcc编译器引入后comdat section(或者叫linkonce section)才会出现的。

comdat section简单地说就是编译器将可能存在多处定义的symbol作了一个特殊处理,放到了一个特殊的section,这样多个object文件的comdat section可能保存了同一个symbol的信息,在linker选择symbol进行读取的时候只会选择其中一个section,而丢弃其他secition。

如果由于链接顺序不对,导致引用了不对的section(即被丢弃的那个),就会报这个错。(不同的编译参数可能导致这个问题)

为解决这个问题,需要同一编译参数,并检查链接顺序(按照链接参数从左向右链接)。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网