如何找出二进制文件中使用的c ++标准?

时间:2018-08-25 09:00:50

标签: c++ linux c++11 gcc

例如,我有一个名为“ helloworld”的cpp文件,名为main.cpp。
如果我使用标志-std = c ++ 11进行编译。然后用-std = c ++ 03标志再次编译它。
如何在两者之间指定使用c ++ 11标志编译的对象?
额外:我的特定问题是我有一个第三方lib文件,我在代码中使用了它,但是我不知道应该使用哪个“ -std”标志。

1 个答案:

答案 0 :(得分:0)

  1. 如果它是第三方库,则必须有一些文档说明要从源代码构建的编译步骤。请参考。
  2. 如果没有可用的东西,我假设您至少可以访问源代码,请查看实现(头文件或源文件),您可能会获得足够的信息来了解如果它使用的代码符合C ++ 11标准。
  

@πάνταῥεῖ,我的意思是说,用不同的c ++标准进行编译不会在二进制文件中留下任何东西吗? -Riopho

如果您想从二进制文件中找出问题,那么我可能会使用objdump并在打开拆包-objdump -dC <binary_name>-的情况下对二进制文件进行反汇编(假设您使用的是Linux,尽管窗口不多)。您应该能够从中得到一些提示。

我不确定编译器是否在二进制文件中留下任何痕迹。