2012-03-09 134 views
3

我需要知道我的庫是如何編譯的,即使用了哪些編譯器選項?具體而言,它是否是通過優化編譯的,還有其他幾個選項。有沒有辦法找出在Linux上編譯.so庫時使用的編譯器選項?

有沒有什麼辦法可以在linux,x86_64平臺上提取這些信息?

+5

因此,給定一個現有的.so文件,你想知道它是如何編譯的?請記住,一個庫可能是由多個源文件生成的,每個源文件都可能使用不同的選項編譯。 – 2012-03-09 09:44:44

+0

知道每個源文件編譯選項會很有幫助.. – sandeep 2012-03-09 13:12:56

+1

你使用'-frecord-gcc-switches'或'-grecord-gcc-switches'嗎?這些選項是有原因的。 – MSalters 2012-03-09 15:45:03

回答

2

我不相信有可能自動檢測編譯器選項;至少不是以便攜的方式。

你可以做的是改變你的構建腳本(例如你的Makefile)自動附加一個定義和優化參數(-D標誌)。

1

如果庫來自您使用的Linux發行版,則可以查看包的來源,例如,對於基於Debian的系統:apt-get source PACKAGENAME,獲取構建參數。

+0

同樣,如果它來自基於RPM的發行版,則可以下載可能包含構建選項的SRPM。 – Bash 2012-03-11 08:33:21

相關問題