如何判断一个图书馆与某些版本的GCC

如何判断一个图书馆与某些版本的GCC

问题描述:

我的Unix机器上编译OpenSSL的编译。默认编译器是GCC-4.4.7。我把另一个编译器GCC-5.2.0放在另一个文件夹中。我通常会在前面加上可选的编译器的路径$PATH使gcc将始终使用在一个替代路径。如何判断一个图书馆与某些版本的GCC

但现在我不确定我有编译库,有没有办法告诉它的gcc用于编译我的图书馆?对.o文件的解决方法也很感激。

+2

是否'readelf -p的.comment /路径/到/ yourprogram'给你的信息,你想? –

+0

谢谢@MarkPlotnick!这太棒了!正是我需要的!您能否将此转换为答案,以便我可以接受? – ZDunker

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)