10

いくつかの .c ファイルと 1 つの .a オブジェクト ファイルがあります。それらを1つのexeファイルにコンパイルするには、gccでどのコマンドを使用する必要がありますか? メイクファイルを使用すると、どのようになりますか?

4

3 に答える 3

21

単純なケースでは、おそらくこれを行うことができます:

gcc -o maybe.exe useful.a something.c

重要なプロジェクトのMakefileは通常、最初にgccを呼び出して、各.cファイルを.oオブジェクトにコンパイルします。

gcc -c something.c

次に、.oファイルと.aファイルのリストを使用してリンカーを呼び出し(最近ではgccをラッパーとして使用することがよくあります)、出力実行可能ファイルにリンクします。

gcc -o maybe.exe useful.a something.o

また、インストールされているほとんどのライブラリでは、.aファイルを明示的に指定するのではなく、「構成された(または-Lで指定された)検索ディレクトリでlibhandy.aという名前のファイルを検索してみてください」の略である-lhandyと言うのが一般的です。 「」

于 2012-05-04T18:41:05.710 に答える
7

*.a静的ライブラリであり、動的ではありません ( *.dllWindows および*.soLinux)

gcc -L<here comes the library path> -l<library name>

たとえば、現在のパスに libname.a があるファイルの場合、次を使用する必要があります。

gcc *.c -L. -lname -o myprogram.o

manから(シェル コマンド プロンプトに man gcc を入力)

オプションと他の引数を混在させることができます。ほとんどの場合、使用する順序は重要ではありません。同じ種類のオプションを複数使用する場合は、順序が重要です。たとえば、-L を複数回指定すると、ディレクトリは指定された順序で検索されます。また、-l オプションの配置も重要です。

于 2012-05-04T18:44:12.133 に答える
4

.a ファイルはコンパイル済みのライブラリです。.c ファイルを .o にコンパイルしてから、リンカーを使用して .o を .a にリンクし、実行可能ファイルを生成します。

于 2012-05-04T18:34:59.193 に答える