如何检查C中的目标文件中是否存在宏

如何检查C中的目标文件中是否存在宏

本文介绍了如何检查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中的目标文件中是否存在宏?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-30 05:45