2017-03-15 86 views
0

我的Unix機器上編譯OpenSSL的編譯。默認編譯器是GCC-4.4.7。我把另一個編譯器GCC-5.2.0放在另一個文件夾中。我通常會在前面加上可選的編譯器的路徑$PATH使gcc將始終使用在一個替代路徑。如何判斷一個圖書館與某些版本的GCC

但現在我不確定我有編譯庫,有沒有辦法告訴它的gcc用於編譯我的圖書館?對.o文件的解決方法也很感激。

+2

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

+0

謝謝@MarkPlotnick!這太棒了!正是我需要的!您能否將此轉換爲答案,以便我可以接受? – ZDunker

回答

2

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)