是否可以检查编译时是否在编译时将其设置为gcc下的预处理程序指令?更确切地说,我想检测是否设置了-rdynamic
链接器标志?
答案 0 :(得分:4)
-rdynamic
不是编译器标志,而是linker one。回想一下gcc
只是一个驱动程序,它启动编译器cc1
,汇编程序as
,链接器ld
等...尝试传递-v
到gcc
了解它的起源。
我建议你在传递-Dwith_rdynamic
时传统上将一些适当的预处理器-rdynamic
传递给编译器。这通常是make
的问题(即代码有些好Makefile
...)
您可能可以在生成的可执行文件上使用nm -D
来检查它是否与-rdynamic
链接。或者您可以使用(在您的计划中)dlopen(3)使用NULL
路径,然后使用dlsym(3)
某些符号等。
我无法弄清楚为什么你真的需要检查-rdynamic
:当需要时,你会很快注意到你错过了它!
答案 1 :(得分:0)
虽然我不能说绝对没有,但我不期待。
使用以下命令查看gcc和g ++编译器支持的预定义宏
这可能也有帮助。