実行fileを最小化

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
da0

実行fileを最小化

#1

投稿記事 by da0 » 8年前

実行fileを最小化するにはどのようにcompileすればよいのでしょうか?
gcc v4.8.1を使っていますが main(){} とだけ記述しても17.5kbになります(gcc -sでcompile)。
しかし巷では1kb以下の実行fileも見かけられます

あんどーなつ

Re: 実行fileを最小化

#2

投稿記事 by あんどーなつ » 8年前

面白い課題ですね。Visual Studioの話ですけど、デフォルトのコンパイルオプションではCの標準ライブラリの
バイナリがくっついてしまうらしいです。gccのツールで実行ファイルを逆アセンブルするのがあったと思います。
それで何が贅肉になっているか見てみるといいでしょう。

あんどーなつ

Re: 実行fileを最小化

#3

投稿記事 by あんどーなつ » 8年前

しかし1kB以下の実行ファイルを作りたいなんて、セキュリティコンペに出場なさるのでしょうか?
今時100kBでも読み込みは一瞬ですよ。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 実行fileを最小化

#4

投稿記事 by みけCAT » 8年前

ハンドコンパイル(実行fileの形式の資料を読みながらバイナリエディタで手書き)という方法が考えられます。
実行fileを生成するプログラムを自分で書いてもいいかもしれません。
対象のOSは何ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

da0

Re: 実行fileを最小化

#5

投稿記事 by da0 » 8年前

1kb以下にしたいという訳ではないですが、無駄に大きくなるのが不思議だったもので。
実行fileを生成するプログラムを書くというのは面白そうですが敷居が高そう。
OSはWindowsXPです

あんどーなつ

Re: 実行fileを最小化

#6

投稿記事 by あんどーなつ » 8年前

実行ファイル(.exe)のファイルサイズは、ロード時のオーバーヘッドが一番の問題になります。
これを解消するには、実行ファイルのサイズを小さくする他、
ロードのタイミングを分散させてやることも効果的です。

ネイティブアプリケーションの場合、実行ファイルのコードをDLLのほうに移してやり、
明示的リンク(動的リンク)をすることが考えられます。

.net Frameworkのアプリケーション(C#等)の場合、JITコンパイルの仕組みにより
最初からロードタイミングは分散されています。
また、OSで用意している.dllを多数使うので実行ファイルのサイズも小さかったりします。

ご参考までに

閉鎖

“C言語何でも質問掲示板” へ戻る