いくつかの .c ファイルと 1 つの .a オブジェクト ファイルがあります。それらを1つのexeファイルにコンパイルするには、gccでどのコマンドを使用する必要がありますか? メイクファイルを使用すると、どのようになりますか?
3 に答える
単純なケースでは、おそらくこれを行うことができます:
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と言うのが一般的です。 「」
*.a
静的ライブラリであり、動的ではありません ( *.dll
Windows および*.so
Linux)
gcc -L<here comes the library path> -l<library name>
たとえば、現在のパスに libname.a があるファイルの場合、次を使用する必要があります。
gcc *.c -L. -lname -o myprogram.o
manから(シェル コマンド プロンプトに man gcc を入力)
オプションと他の引数を混在させることができます。ほとんどの場合、使用する順序は重要ではありません。同じ種類のオプションを複数使用する場合は、順序が重要です。たとえば、-L を複数回指定すると、ディレクトリは指定された順序で検索されます。また、-l オプションの配置も重要です。
.a ファイルはコンパイル済みのライブラリです。.c ファイルを .o にコンパイルしてから、リンカーを使用して .o を .a にリンクし、実行可能ファイルを生成します。