Dev-C++同時編譯多個C文件:
考察多源代碼文件程序的編譯及頭文件的使用 :
如果程序的函數 分別放在不同的程序之中,那就必須是定義常量的#define指令對于每個文件都可用:
定義一個***.h文件,存儲函數原型和常量定義
需一起編譯的文件添加 #include "***.h"即可
編譯步驟:
1.新建一個C空白工程
2.將需要一起編譯的文件添加至上述新建工程中
3.編譯運行即可,C++同理
C/C++多文件編譯原理
在單文件的情況下(只有一個.h和.c/.cpp)我們只需編譯該文件即可,例如:
$ gcc main.c -o main
但更多的情況下,一個工程需要分開為多個源文件,比如 main.c、a.c、b.c 等,那這種情況下是如何編譯的呢?首先要在 main.c 中調用 a.c 中的方法,必須包含 a.h 頭文件,有了頭文件中的函數聲明就確保了 main.c 的函數調用的正確性。好了,現在我們執行編譯多文件命令:
$ gcc main.c a.c b.c -o main
整個編譯結果是這樣的:編譯器先把源文件見 main.c a.c b.c 獨立編譯為 main.obj a.obj b.obj 目標文件,然后再把其中要用到的函數方法鏈接到 main.obj 來,最終打包成可執行文件 main,這就是分離編譯和鏈接原理。
如何編譯由多個c++源文件組成的項目
在我寫數據結構作業的時候,由于自己寫了一些需要使用的數據結構,所以源文件有如下幾個:
Main.cpp, Stack.cpp, Stack.h, Queue.cpp, Queue.h
但是當我在IDE中編寫好源文件,想要自己來編譯的時候,我發現我不會處理多個源文件的情況,查找資料后有如下解決方法:
1.在同一語句中同時編譯多個源文件
g++ -Wall -g Main.cpp Stack.cpp Queue.cpp -o StackOut
生成可執行文件StackOut
在g++編譯器中,-Wall是允許發出GCC能夠提供的所有有用的警告的參數,-g是告訴g++產生能被GUN調試器使用的調試信息以便調試你的程序。具體各個參數的用法在這里和這里有詳細說明。
2.分別編譯多個源文件
g++ -Wall -g -c Stack.cppg++ -Wall -g -c Queue.cppg++ -Wall -g -c Main.cppg++ -g Stack.o Queue.o Main.o -o StackOut
在編譯單個文件時,我試了一下,順序是任意的。如果我修改了Stack.cpp,則:
g++ -Wall -g -c Stack.cpp
g++ -g Stack.o Queue.o Main.o -o StackOut
即可。
3.編寫Makefile文件
CC = g++ CFLAGS = -Wall -g all: clean Stack.o Queue.o Main.o StackOut Stack.o : Stack.h ${CC} ${CFLAGS} -c Stack.cppQueue.o : Queue.h ${CC} ${CFLAGS} -c Queue.cpp Main.o : Stack.h Queue.h ${CC} ${CFLAGS} -c Main.cpp StackOut : Stack.o Queue.o Main.o ${CC} ${CFLAGS} Stack.o Queue.o Main.o -o StackOutclean: rm -rf *.o rm -rf StackOut
到此這篇關于Dev-C++同時編譯多個C或C++文件方法的文章就介紹到這了,更多相關編譯多個C或C++文件內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章,希望大家以后多多支持武林網!
新聞熱點
疑難解答
圖片精選