私はcで書かれた簡単なシミュレートされたリアルタイムオペレーティングシステムをコンパイルするmakefileを書こうとしています。
ディレクトリ構造は次のようになります
**KB**
SOURCE
-------
- Keyboard.c (helper process)
Incl
--------
- Include files needed by keyboard.c
**CRT**
SOURCE
-------
- crt.c (helper process)
Incl
--------
- Include files needed by crt.c
**RTX**
SOURCE
-------
- SOURCE Files
INCLUDE
--------
- Include Files
RTXでは、ヘルパープロセスを2つの実行可能ファイルにコンパイルし、実行可能ファイルを使用して実行する必要があります。
同じMakefile内で3つの異なる実行ファイルを生成する方法や、1つの実行可能ファイルに対しても異なるインクルードファイルにそのファイルを含める方法についてはわかりません。以前はmakefileを作成したことがなく、オンラインのチュートリアルに続いて問題が発生しています。
RTXのためにこれまで私が持っていたことがあります(別のパスに追加する方法は?)
#For RTX Exexutable
OBJS = api.o init_table.o k_rtx.o msg.o pcb.o queue.o user_proc.o main.o
iRTX-G29 : $(OBJS)
gcc -o iRTX-G29 $(OBJS)
api.o : api.h
gcc -c api.c
init_table.o : init_table.h
gcc -c init_table.c
k_rtx.o : unistd.h string.h k_rtx.h
gcc -c k_rtx.c
main.o : fcntl.h sys/mman.h sys/wait.h stdio.h stdio.h sys/types.h sys/ipc.h sys/shm.h errno.h string.h stdlib.h signal.h k_rtx.h buffer.h global.h
gcc -c main.c
msg.o : msg.h
gcc -c msg.c
queue.o : queue.h
gcc -c queue.c
user_proc.o : user_proc.h
gcc -c user_proc.c
どんな助けでも大歓迎です!ありがとう!
ベストアンサー
まず、既存のmakefileを単純化してみましょう。同じフォームを持つ多くのオブジェクトルールがあります。
msg.o : msg.h
gcc -c msg.c
それを書くためのよりクリーンな方法は次のようなものです:
msg.o : msg.c msg.h
gcc -c $< -o [email protected]
(依存関係 msg.c
を追加して、自動変数を指定し、出力の名前を指定します)。これらのオブジェクトルールはすべて同じように見えるので、< -o [email protected]