c++ - 在未链接的部分生成警告

标签 c++ c linker linker-scripts

我正在编写自己的链接描述文件和启动代码(用于嵌入式处理器),并且我正在使用 gnu 链接器。

起初,我开始只支持C 代码,我的启动代码工作正常......然后我尝试链接一个C++ 程序。它已连接并且一切正常,但它不起作用。

经过一些调试,我发现链接器脚本没有将 .sbss 部分放在任何地方(我确实将 .bss 部分放在了某处,但不是 .sbss)。所以这是我的问题:

是否有可能在某个部分未链接到程序时生成警告?....谷歌搜索没有找到任何内容,我浏览了链接器的手册但无济于事

最佳答案

Is it possible to generate a warning whenever a section is not linked to the program?

我认为这在链接器中是不可能的,但您可以在链接后步骤中简单地实现它:

readelf -WS a.out | grep -q ' \.sbss' || { echo "Did not find .sbss!" >&2; false; }

I want this to work for arbitrary sections (that I may not know about at this time)

这样的警告是没有用的,因为它会一直

考虑:

  • main.o 定义 main 并且不引用任何其他内容。
  • foo.o 定义了 foo 并包含 .x.y.z 部分foo.olibfoo.a
  • 的一部分

现在,当您使用 gcc main.o -lfoo 链接时,foo.o不会被拉入链接(因为那里没有对它的引用),你的警告现在会告诉你 .x.y.z 没有链接到程序中.

关于c++ - 在未链接的部分生成警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908109/

相关文章:

c - 未解析的外部符号、多个项目、Visual C++ 链接器错误?

c++ - linux/g++ 链接的多重定义

c++ - 当另一方写入管道时,读取管道是否安全?

c - while循环麻烦

c++ - 2D 群组碰撞检测

c - struct typedef 中的声明规则

c - 正值输入 C

c++ - 运算符重载对某些东西不起作用,对其他东西有效....链接器错误 LNK2019

c++ - 如何在基类中调用派生类的函数?

c++ - 如何在程序播放的同时播放声音?