メイクファイルの使用は私にとって初めてです。これまでのところ、最も単純なアプローチでの最初のテストは非常にうまく機能しました。しかし、今では、実行可能ファイルと共有ライブラリを作成するmakefileの作成に困っています。私が言ったように、メイクファイルは初めてです。これが私の簡単なアプローチです。
exe.a: main.c func.c
gcc main.c func.c -o exe.a
lib.so: func.c
gcc func.c -o lib.so -fPIC -shared
メイクファイルが実行されると、実行可能ファイルのみがコンパイルされます。 1つのメイクファイルで2つのオブジェクトを作成することも可能ですか?これらのファイルを作成する最良の方法は何ですか?
デフォルトでは、make
は、Makefileのfirstターゲットのみをビルドします。これは、あなたの場合はexe.a
です。 make
に別のターゲットを作成するように指示できます。
make lib.so
または両方のターゲット:
make lib.so exe.a
または(推奨)新しい最初のターゲットを導入します。通常はall
という名前です:
all: exe.a lib.so
exe.a: main.c func.c
gcc main.c func.c -o exe.a
lib.so: func.c
gcc func.c -o lib.so -fPIC -shared
これで、単純なmake
が(擬似)ターゲットall
を構築します。これはexe.a
とlib.so
に依存するため、最初に構築されます。この場合、all
と呼ばれるファイルがディレクトリ内にないようにしてください。make
は混乱するためです。