本文介绍了如何检查C中的目标文件中是否存在宏?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
例如,我定义一个宏:
#ifdef VERSION
//.... do something
#endif
如何检查目标文件中是否存在VERSION
?我试图用objdump
对其进行反汇编,但是没有发现我的宏VERSION
的实际值. VERSION
在Makefile中定义.
How can I check if VERSION
exist in my object file or not? I tried to disassemble it with objdump
, but found no actual value of my macro VERSION
. VERSION
is defined in Makefile.
推荐答案
尝试使用gcc
中的-g3
选项进行编译.它将宏信息也存储在生成的ELF文件中.
Try compiling with -g3
option in gcc
. It stores macro information too in the generated ELF file.
此后,如果您在输出可执行文件或目标文件中为其定义了宏MACRO_NAME
,则仅grep
.例如,
After this, if you've defined a macro MACRO_NAME
just grep
for it in the output executable or your object file. For example,
$ grep MACRO_NAME a.out # any object file will do instead of a.out
Binary file a.out matches
或者您甚至可以尝试
$ strings -a -n 1 a.out | grep MACRO_NAME
-a Do not scan only the initialized and loaded sections of object files;
scan the whole files.
-n min-len Print sequences of characters that are at least min-len characters long,
instead of the default 4.
这篇关于如何检查C中的目标文件中是否存在宏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!