我在Unix机器上编译OpenSSL。默认编译器为GCC-4.4.7
。我在另一个文件夹中放置了另一个编译器GCC-5.2.0
。我通常会将替代编译器的路径添加到$PATH
,以便gcc
始终使用替代路径中的编译器。
但是现在我对我编译的库不确定,有没有办法告诉哪个gcc用于编译我的库?有关.o
文件的解决方法也很受欢迎。
答案 0 :(得分:6)
gcc和clang编译器套件会将一个版本字符串放在ELF文件的.comment
部分中。 (如果生成中间汇编语言文件,则可以将此字符串视为.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)