我想編寫一個makefile來編譯一個簡單的模擬實時操作系統,用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要求輔助程序被編譯成兩個可執行文件,它然後使用這些可執行文件運行。
我不知道如何在同一個Makefile中生成三個不同的可執行文件,甚至不知道如何在甚至一個可執行文件的不同包含文件中包含文件。我以前從未創建過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
任何幫助將不勝感激!謝謝!
這看起來像一個非常簡單的佈局。 1)makefile在哪裏? 2)你想在哪裏得到目標文件('msg.o')和可執行文件(iRTX-G29)? 3)這三個分支是否相互依賴(例如,RTX需要'Keyboard.h'還是'crt.h')? – Beta
makefile位於名爲project的主目錄中。 「Project」目錄包含目錄RTX,KB和CRT。每個目錄包含源文件和頭文件所在的源文件和頭文件夾。 makefile應該爲鍵盤生成三個可執行文件,一個用於crt,一個用於RTX本身。 – Falcata
RTX可執行文件需要運行KB和CRT可執行文件,但不需要頭文件。每個可執行文件都是不同的過程 – Falcata