在“.rodata”部分中引用

Posted

技术标签:

【中文标题】在“.rodata”部分中引用【英文标题】:referenced in section `.rodata' of 【发布时间】:2012-11-19 09:44:22 【问题描述】:

朋友们 我遇到了一个严重的链接错误,我收到了这样的错误referenced in section .rodata' of xxx defined in discarded section .text._xxx.

这就是我编译程序的方式

   g++  main.o CPQENReportBB1.o CPQENReportBB2.o CPQ10minRecord.o  PQ10minconfiguration.o  ENReportConfig.o CPQFreeRecording.o CPQFreeHistogramReport.o 

我有 8 个文件,它正在正确编译,但在链接时出现前面提到的错误。(我使用的是 g++ 版本 3.4.3) 在两个文件中,我收到此错误消息;我试图在链接中对文件进行洗牌,但随后在另外两个文件中出现错误。 请提出任何解决此问题的建议。我正在使用 c++ 模板

【问题讨论】:

检查这个:gcc.gnu.org/bugzilla/show_bug.cgi?id=16625。换句话说:您可以尝试使用较新的 GCC 吗? 对不起,我没听懂你在说什么。如果可能的话,告诉我这个错误是由于代码中的一些问题或者是编译器中的错误 可能是编译器错误。请参阅链接。永远不要尝试编译器版本。 gcc 3.4.3 是古老的(两周前转为 8 年) 【参考方案1】:

2 个可能的原因:

    文件格式和机器架构。 __attribute__((section))的使用

【讨论】:

以上是关于在“.rodata”部分中引用的主要内容,如果未能解决你的问题,请参考以下文章

GCC将所有字符串存储在.rodata中

链接器为rodata 部分计算错误的地址

使用模板化接口会导致“未定义引用”

检索 .rodata 和 .rodata1 中的偏移量、字符串和虚拟地址

在 SQL Server 中批量插入部分引用的 CSV 文件

EXCEL中,如何引用一个单元格中的数据,作为另一个单元格内容中的一部分?