如何判断库是使用 C++11 编译的

How to tell a library was compiled using C++11

我如何判断某个 C++ 库是否使用链接 c++11 标准?

elf 二进制文件默认包含所用编译器版本的签名。

现在,关于使用的编译器标志,如果在编译时使用 -frecord-gcc-switches,那么,您可以在 ELF 可执行文件中找到签名。

 g++ -frecord-gcc-switches -std=c++0x trial.cpp
readelf -p .GCC.command.line a.out

“.GCC.command.line”部分的字符串转储:

  [     0]  -imultilib . [     d]  -imultiarch x86_64-linux-gnu   [    2a]  -D_GNU_SOURCE   [ 38]  trial.cpp   [    42]  -mtune=generic   [    51]  -march=x86-64  [    5f]  -std=c++0x   [    6a]  -frecord-gcc-switches   [    80]   
-fstack-protector