-1

lcc-win私はこれをメモ帳で書き、コマンドを使用して、でコンパイルしましたlc hello.c

#include <stdio.h>
int main(void)
{
  printf("Hello World\n");
  return 0;
}

結果のexeは100KBでした。印刷するだけのプログラムとしては、ちょっと巨大なようですHello World。これは正常ですか?サイズを小さくできますか?最近の100KBは実際には問題ではありませんが、それでもそれが何をするかについては少し大きいようです。私が書いたすべてのCコードが100KBのexeとして出てきれば、それほど悪くはないでしょう。

4

2 に答える 2

0

1-include <>タグを使用するたびに、acライブラリとのリンクを作成し、プログラムにロードします。そのため、実際にライブラリ関数を必要とするファイルにのみ含めることが重要です。

2-一方、生成するバイナリには、プログラムを適切に実行するために必要な重要な情報(cf:libelfまたは)、ヘッダー、ステップが常に含まれています。ASMこれにはスペースが必要です。

于 2012-08-16T08:14:05.880 に答える
0

これは本当に簡単な質問です。lcc-winに何が起こるかはCコンパイラデジタルマーズと同じです。彼はexeをprintfなどの関数を含むdllにリンクせず、関数はEXEにリンクされているため、requerindoはありません。お使いのコンピュータにDLLがあること。

ほら、私は単純なHello World EXEを作成し、HexEditorでhinを開きました....printf関数はmsvcrt.dllに格納されており、exeのインポートセクションにはこのdllがありません...

ここに画像の説明を入力してください

そして、uはこの他の写真でソース定義を見つけることができます:

ここに画像の説明を入力してください

このスタイルの関数定義を使用すると、dll呼び出しを行うよりも高速になります。

于 2014-08-30T12:17:17.997 に答える