2013-05-19 19 views
0

我正在構建一個使用buildroot的交叉編譯gcc,並且可以爲./configure步驟提供一些額外的配置選項,而無需修補buildroot源。但是,我想覆蓋buildroot源已明確設置的選項。具體來說,buildroot的來源有:當./configure給出衝突選項時,哪個勝出?

$(GCC_SRC_DIR)/configure $(QUIET) \ 
--prefix=/usr \ 
... 
--disable-__cxa_atexit \ 
... 
$(EXTRA_GCC_CONFIG_OPTIONS) 

,我希望把--enable-__cxa_atexit$EXTRA_GCC_CONFIG_OPTIONS,並有是什麼榮幸。

我猜如果buildroot的makefile設計得不錯,那麼這實際上會發生什麼。但是我試圖驗證這是如此(在文檔中,而不是通過試驗和錯誤),並且無法找到任何有衝突的選項傳遞給./configure腳本時發生什麼的規範。

所有基於autotools的配置腳本是否都以相同的方式處理?或者gcc可能會以某種方式處理它,並且(例如)binutils以不同的方式處理它?

我希望SO上的其他人不得不在我之前跟蹤這件事。但是我的谷歌和SO-fu並沒有改變任何事情。

+0

'autoconf'非常靈活且令人難以置信地濫用,多年來已有數千名開發人員濫用了它,以致'configure'腳本中的一致性很低。無論您在所有生成的「configure」腳本中都看不到所期望的行爲! –

回答

1

相關文檔是來自GNU編碼標準的How Configuration Should Work和來自Autoconf手冊的Running configure Scripts/Optional Features

他們沒有提到衝突的選項,所以我們只是在生成的configure腳本中檢查shell代碼。我使用Autoconf 2.69製作的腳本僅按順序處理--enable-foo--disable-foo選項,並將其分配給enable_foo,因此後一個選項僅獲勝。