【问题标题】:How to find out which c++ standard used in a binary file?如何找出二进制文件中使用的 C++ 标准?
【发布时间】:2023-03-03 05:37:16
【问题描述】:

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

【问题讨论】:

  • 一般情况下是不可能的。
  • @HolyBlackCat 好吧,你可以在二进制文件中放置一个指标字符串。
  • @πάνταῥεῖ ,我的意思是用不同的 c++ 标准编译不会在二进制文件中留下一些东西?
  • “我有一个第三方lib文件”那么你也应该有一个相应的头文件和解释兼容性的文档。
  • @Riopho 不,除非您在自己的代码中提供这样的信息,否则不会。

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


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

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

如果您想从二进制文件中找出答案,那么我可能会使用 objdump 并在打开解构功能的情况下反汇编二进制文件 - objdump -dC <binary_name> - (假设您在 Linux 上,但不太了解 Windows)。你应该能从中得到一些提示。

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

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 2011-01-08
    • 2012-08-24
    • 2015-04-29
    • 2010-12-01
    • 2021-08-09
    • 2010-12-08
    • 1970-01-01
    • 2017-01-15
    相关资源
    最近更新 更多