2012-01-09 38 views
3

對於我正在開發的一個小型項目,我一直在通過命令行使用簡單編譯。然而,隨着它變得更大,我決定學習並使用autoconf和automake來編譯它。automake輸出二進制文件大於命令行編譯的文件夾

經過一番配置,我成功地使用automake構建。但是我注意到輸出二進制文件的大小比通過命令行使用g ++大。我嘗試使用靜態和動態庫,結果是一樣的。

我也試過一個簡單的hello世界,它比automake更大,比命令行編譯更大。

所以,我試圖運行objdump -h:編譯的命令行返回27節,而在另一側編automake的返回相同的27段加上7個部分叫做debug_aranges,DEBUG_INFO,debug_abbrev,debug_line,debug_loc,debug_ranges。所以我顯然傾向於認爲它與調試有關。

所以,任何人都知道這些部分是爲了什麼,如果他們是必要的,以及如何擺脫那麼可執行文件較小的分發。

+1

我不太瞭解automake,但看起來像是通過automake腳本包含調試符號。嘗試找到禁用該選項的automake選項。 – dtech 2012-01-09 18:06:56

+1

根據這一點 - 嘗試'剝離'二進制;事後還是更大? – duskwuff 2012-01-09 18:16:07

+0

是的!在兩者上使用剝離後,他們獲得相同的尺寸。對不起,我不知道這個命令。我也意識到「問題」在於automake在編譯期間自動將-g參數放入g ++中,這實際上是dtech所說的調試符號。感謝您的幫助。 – 2012-01-09 18:35:21

回答

5

當您安裝二進制文件時,只需調用make install-stripinstall將在安裝過程中刪除它們。

相關問題