由于某种原因,通过cmake包含了错误的opensslv.h标头,或者我认为。我想确定并打印出“OPENSSL_VERSION_NUMBER”的哪个值被编译到我的二进制文件中。 我该怎么做?
答案 0 :(得分:0)
正如@Galik提到的评论所提到的,如果您可以编辑来源,则可以打印出宏的值。
如果您拥有的只是二进制文件,那么它就会变得很难,因为在编译器看到源代码之前,预处理器将用其值替换宏名称。因此二进制文件不包含任何返回原始宏名称的“链接”。
一些编译器(根据我的经验,clang做得最好)可以在启用调试符号的情况下在二进制文件中嵌入此类信息,以便它可以打印更好的错误消息并使调试更有效。 但是在没有调试符号的优化二进制文件中,你几乎没有运气。也就是说,除非你开始在你知道使用宏的地方挖掘二进制文件的反汇编,并且你知道可能需要的潜在值。然后你可能能够挖出来。