2017-12-16 1 views
0

私はdev C++ v5.11(C言語)を使用した非常に単純なプログラムを作成しました.HxDでコンパイルされたコードを見て、元のコードとどのように比較しているかを見たいと思っていました。問題は、コンパイルされた情報の約95%が迷惑情報のように見え、9行のコードを取り込んで127KBのファイルに広げたように見え、多くの空白スペース、エラー処理文字列、型宣言を文字列形式で返します。私の質問は、なぜこれが問題なのか、また、必要なだけコードをコンパイルするために他のプログラムを使うことができるのでしょうか?私のexeファイルのすべての迷惑情報は何ですか?

オリジナルコード:

#include <stdio.h> 
int main() { 
    int count = 0; 
    start: 
     count = count + 1; 
     printf("count is %d\n", &count); 
     goto start; 
    return 0; 
} 

コンパイルされたコードは、いずれも完全な答えはあなたのコンパイラに固有のものになります

+0

コードにはデバッグ情報が含まれていますか? –

+0

コードの先頭に大きなヘッダファイルがあります。 – Rohcana

+0

は、printfだけをインクルードするような、ヘッダのサイズを減らす方法はありますか? –

答えて

2

体、そしてあなたがあなたのプログラムを内蔵している方法に置くことには大きすぎますおよびホストシステム。私は一般的な懸念に焦点を当てます。

デバッグ情報を使用して最適化せずにコンパイルすると(多くの場合、コンパイラのデフォルト設定になります)、実行可能ファイルには多くの追加情報が含まれます。また、関連する静的リンクと動的リンクのようなリンクオプションもあります。ライブラリからの情報量を実行可能ファイルにコピーする量を制御します(実行可能なサイズのトレードオフ、実行時にアクセス可能なライブラリへの依存などなど)。 )。

実行ファイルから不要な情報を削除するために、システムにユーティリティ(たとえば、unixの下にあるstrip)があるかもしれません。

1

あなたはLinuxの実行のために、可能な限り最小の実行ファイルのサイズを取得しようとしている、この記事は面白いかもしれません:http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

私はあなたの実行可能ファイルの大部分が含まれstdio.hにコードを巻き取られる想像してみてください。

また、HxDで見るのではなく、アセンブリ出力を見ることに興味があります。これはVisual Studioの/ faスイッチで取得できます。この設定は、Project-> Properties-> Configuration Properties-> C/C++-> Output Filesで確認できます。

関連する問題