2012-01-09 14 views
3

私が開発している小さなプロジェクトでは、コマンドラインから単純なコンパイルを使用しています。しかし、大きくなったので、私はautoconfとautomakeを学んでそれをコンパイルすることに決めました。コマンドラインでコンパイルされたビンより大きいautomake出力バイナリ

設定が完了した後、私はautomakeを使用して正常に構築しました。しかし、出力バイナリファイルのサイズは、g ++をコマンドライン経由で使用するよりも大きかったと指摘しました。静的で動的なライブラリを使ってみましたが、結果は同じでした。

私はまた、単純なhelloの世界を試しました。また、コマンドラインのコンパイルよりもautomakeのほうが大きかったです。

だから、私はobjdump -hを実行しようとした:コンパイルコマンドラインは27個のセクションに戻って、他の側にコンパイルAutomakeは同じ27節プラスdebug_arangesと呼ばれる7節、DEBUG_INFO、debug_abbrev、debug_line、debug_loc、debug_rangesを返しました。だから私は明らかにそれがデバッグに関連するものだと思う傾向があります。

誰もがこのセクションが何であるかを知っています。もし必要であれば、どのようにして駆除して、実行ファイルを配布用に小さくするのかを知っています。

+1

私はautomakeについてよく分かりませんが、あなたのautomakeスクリプトを通してデバッグシンボルを組み込んでいるようです。それを無効にするautomakeオプションを探してみてください。 – dtech

+1

それに従って、バイナリを 'strip'してみてください。それはまだそれ以後どんなに大きいですか? – duskwuff

+0

はい!両方でストリップを使用した後、同じサイズになります。申し訳ありませんが、私はこのコマンドについて知りませんでした。また、コンパイル時にautomakeが自動的に-gパラメータをg ++に追加するという「問題」が実現しました。これは実際にはdtechが述べたようにデバッグシンボルです。助けてくれてありがとう。 –

答えて

5

バイナリをインストールするときにmake install-stripを呼び出すだけで、インストールプロセス中にinstallが削除されます。

関連する問題