実行fileを最小化するにはどのようにcompileすればよいのでしょうか?
gcc v4.8.1を使っていますが main(){} とだけ記述しても17.5kbになります(gcc -sでcompile)。
しかし巷では1kb以下の実行fileも見かけられます
実行fileを最小化
Re: 実行fileを最小化
面白い課題ですね。Visual Studioの話ですけど、デフォルトのコンパイルオプションではCの標準ライブラリの
バイナリがくっついてしまうらしいです。gccのツールで実行ファイルを逆アセンブルするのがあったと思います。
それで何が贅肉になっているか見てみるといいでしょう。
バイナリがくっついてしまうらしいです。gccのツールで実行ファイルを逆アセンブルするのがあったと思います。
それで何が贅肉になっているか見てみるといいでしょう。
Re: 実行fileを最小化
ハンドコンパイル(実行fileの形式の資料を読みながらバイナリエディタで手書き)という方法が考えられます。
実行fileを生成するプログラムを自分で書いてもいいかもしれません。
対象のOSは何ですか?
実行fileを生成するプログラムを自分で書いてもいいかもしれません。
対象のOSは何ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 実行fileを最小化
1kb以下にしたいという訳ではないですが、無駄に大きくなるのが不思議だったもので。
実行fileを生成するプログラムを書くというのは面白そうですが敷居が高そう。
OSはWindowsXPです
実行fileを生成するプログラムを書くというのは面白そうですが敷居が高そう。
OSはWindowsXPです
Re: 実行fileを最小化
実行ファイル(.exe)のファイルサイズは、ロード時のオーバーヘッドが一番の問題になります。
これを解消するには、実行ファイルのサイズを小さくする他、
ロードのタイミングを分散させてやることも効果的です。
ネイティブアプリケーションの場合、実行ファイルのコードをDLLのほうに移してやり、
明示的リンク(動的リンク)をすることが考えられます。
.net Frameworkのアプリケーション(C#等)の場合、JITコンパイルの仕組みにより
最初からロードタイミングは分散されています。
また、OSで用意している.dllを多数使うので実行ファイルのサイズも小さかったりします。
ご参考までに
これを解消するには、実行ファイルのサイズを小さくする他、
ロードのタイミングを分散させてやることも効果的です。
ネイティブアプリケーションの場合、実行ファイルのコードをDLLのほうに移してやり、
明示的リンク(動的リンク)をすることが考えられます。
.net Frameworkのアプリケーション(C#等)の場合、JITコンパイルの仕組みにより
最初からロードタイミングは分散されています。
また、OSで用意している.dllを多数使うので実行ファイルのサイズも小さかったりします。
ご参考までに