设为首页 加入收藏

TOP

c++ linker warning: defined in discarded section
2017-03-30 14:17:11 】 浏览:314
Tags:linker warning: defined discarded section

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(即被丢弃的那个),就会报这个错。(不同的编译参数可能导致这个问题)

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

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇随意输入一串数,将其中的偶数项.. 下一篇C++建模实战之高考录取系统(1)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目