如何判断一个图书馆与某些版本的GCC
问题描述:
我的Unix机器上编译OpenSSL的编译。默认编译器是GCC-4.4.7
。我把另一个编译器GCC-5.2.0
放在另一个文件夹中。我通常会在前面加上可选的编译器的路径$PATH
使gcc
将始终使用在一个替代路径。如何判断一个图书馆与某些版本的GCC
但现在我不确定我有编译库,有没有办法告诉它的gcc用于编译我的图书馆?对.o
文件的解决方法也很感激。
答
gcc和铿锵编译器套件将提出一个版本字符串在ELF文件中的.comment
部分。 (如果生成中间汇编语言文件,则可以将该字符串看作.ident
指令)。
的GNU装载程序将其所有输入对象文件的.comment
部分合并成一个单一部分,从而消除了任何重复。
可以通过运行readelf -p .comment /path/to/your/objectfile
阅读本节。例如,这里是和两个重定位目标文件,做出可执行一个使用GCC编译其他铿锵:
$ 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)
是否'readelf -p的.comment /路径/到/ yourprogram'给你的信息,你想? –
谢谢@MarkPlotnick!这太棒了!正是我需要的!您能否将此转换为答案,以便我可以接受? – ZDunker