如何判断库是否使用某些GCC版本进行编译

ZDu*_*ker 2 linux gcc

我正在Unix机器上编译OpenSSL.默认编译器是GCC-4.4.7.我把另一个编译器GCC-5.2.0放在另一个文件夹中.我通常会在备用编译器的前面添加路径,$PATH以便gcc始终使用备用路径中的路径.

但现在我不确定我编译的库,有没有办法告诉哪个gcc用于编译我的库?还.o可以了解文件的解决方法.

Mar*_*ick 7

gcc和clang编译器套件将在.commentELF文件的部分中放置一个版本字符串.(如果生成中间汇编语言文件,则可以将此字符串视为.ident指令).

GNU链接器将.comment其输入对象文件的所有部分合并为一个部分,从而消除任何重复.

您可以通过运行来阅读本节readelf -p .comment /path/to/your/objectfile.例如,这是一个由两个可重定位目标文件组成的可执行文件,一个用gcc编译,另一个用clang编译:

$ readelf -p .comment hello

String dump of section '.comment':
  [     0]  GCC: (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
  [    2d]  clang version 3.8.1-12ubuntu1 (tags/RELEASE_381/final)
Run Code Online (Sandbox Code Playgroud)