我正在编写自己的链接描述文件和启动代码(用于嵌入式处理器),并且我正在使用 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.o
是libfoo.a
的一部分
现在,当您使用 gcc main.o -lfoo
链接时,foo.o
将不会被拉入链接(因为那里没有对它的引用),你的警告现在会告诉你 .x
、.y
和 .z
没有链接到程序中.
关于c++ - 在未链接的部分生成警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52908109/