在未链接的部分上生成警告

Generate warning on unlinked section

本文关键字:警告 链接      更新时间:2023-10-16

我正在编写自己的链接器脚本和启动代码(用于嵌入式处理器(,并且正在使用GNU链接器。

起初,我开始只支持C代码,我的启动代码工作正常.....然后我尝试链接一个C++程序。 它链接起来,一切都很好,但它没有奏效。

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

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

是否可以在某个部分未链接到程序时生成警告?

我不相信这在链接器中是不可能的,但你可以在链接后的步骤中轻松实现它:

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

我希望这适用于任意部分(我目前可能不知道(

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

考虑:

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

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