C++ 是否可以在编译时将gcc编译标志检测为宏?
是否可以检查编译时是否将编译标志设置为gcc下的预处理器指令?更准确地说,我想检测是否设置了链接器标志?C++ 是否可以在编译时将gcc编译标志检测为宏?,c++,linux,gcc,c-preprocessor,C++,Linux,Gcc,C Preprocessor,是否可以检查编译时是否将编译标志设置为gcc下的预处理器指令?更准确地说,我想检测是否设置了链接器标志?-rdynamic不是编译器标志,而是一个编译器标志。回想一下,gcc只是一个驱动程序,它启动编译器本身的cc1、汇编程序as、链接器ld等等。。。尝试将-v传递到gcc,以了解它的启动 我建议您在传递-rdynamic时,按照惯例向编译器传递一些适当的预处理器-Dwith\u rdynamic。这通常是一个make(即编写一些好的Makefile…) 您可能可以在生成的可执行文件上使用nm-
-rdynamic
不是编译器标志,而是一个编译器标志。回想一下,gcc
只是一个驱动程序,它启动编译器本身的cc1
、汇编程序as
、链接器ld
等等。。。尝试将-v
传递到gcc
,以了解它的启动
我建议您在传递-rdynamic
时,按照惯例向编译器传递一些适当的预处理器-Dwith\u rdynamic
。这通常是一个make
(即编写一些好的Makefile
…)
您可能可以在生成的可执行文件上使用nm-D
,检查它是否与-rdynamic
链接。或者您可以(在程序内部)使用NULL
路径,然后使用dlsym(3)
一些符号,等等
我不明白为什么您真的需要检查
-rdynamic
:当需要时,您很快就会发现您错过了它 -rdynamic
不是编译器标志,而是一个。回想一下,gcc
只是一个驱动程序,它启动编译器本身的cc1
、汇编程序as
、链接器ld
等等。。。尝试将-v
传递到gcc
,以了解它的启动
我建议您在传递-rdynamic
时,按照惯例向编译器传递一些适当的预处理器-Dwith\u rdynamic
。这通常是一个make
(即编写一些好的Makefile
…)
您可能可以在生成的可执行文件上使用nm-D
,检查它是否与-rdynamic
链接。或者您可以(在程序内部)使用NULL
路径,然后使用dlsym(3)
一些符号,等等
我不明白为什么您真的需要检查
-rdynamic
:当需要时,您很快就会发现您错过了它 虽然我不能说绝对不,但我希望不会
使用以下命令查看gcc和g++编译器支持的预定义宏
- gcc-dM-E-xc/dev/null
虽然我不能说绝对不,但我希望不会 使用以下命令查看gcc和g++编译器支持的预定义宏
- gcc-dM-E-xc/dev/null
你为什么要问?为什么?请编辑您的问题以进一步解释。您为什么要问?为什么?请编辑你的问题来解释更多。我写了一个图书馆。我需要提醒任何使用它的人,无论何时他们忘记在编译时包含-rdynamic。请编辑您的问题以解释更多。如果缺少
-rdynamic
,为什么库的用户会不高兴?请准确解释原因(通过编辑和改进您的问题)!有一个我写的图书馆。我需要提醒任何使用它的人,无论何时他们忘记在编译时包含-rdynamic。请编辑您的问题以解释更多。如果缺少-rdynamic
,为什么库的用户会不高兴?请准确解释原因(通过编辑和改进您的问题)!