Dev-C++同時編譯多個C文件:
考察多源代碼文件程序的編譯及頭文件的使用 :
如果程序的函數(shù) 分別放在不同的程序之中,那就必須是定義常量的#define指令對于每個文件都可用:
定義一個***.h文件,存儲函數(shù)原型和常量定義
需一起編譯的文件添加 #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 頭文件,有了頭文件中的函數(shù)聲明就確保了 main.c 的函數(shù)調用的正確性。好了,現(xiàn)在我們執(zhí)行編譯多文件命令:
$ gcc main.c a.c b.c -o main
整個編譯結果是這樣的:編譯器先把源文件見 main.c a.c b.c 獨立編譯為 main.obj a.obj b.obj 目標文件,然后再把其中要用到的函數(shù)方法鏈接到 main.obj 來,最終打包成可執(zhí)行文件 main,這就是分離編譯和鏈接原理。
如何編譯由多個c++源文件組成的項目
在我寫數(shù)據(jù)結構作業(yè)的時候,由于自己寫了一些需要使用的數(shù)據(jù)結構,所以源文件有如下幾個:
Main.cpp, Stack.cpp, Stack.h, Queue.cpp, Queue.h
但是當我在IDE中編寫好源文件,想要自己來編譯的時候,我發(fā)現(xiàn)我不會處理多個源文件的情況,查找資料后有如下解決方法:
1.在同一語句中同時編譯多個源文件
g++ -Wall -g Main.cpp Stack.cpp Queue.cpp -o StackOut
生成可執(zhí)行文件StackOut
在g++編譯器中,-Wall是允許發(fā)出GCC能夠提供的所有有用的警告的參數(shù),-g是告訴g++產生能被GUN調試器使用的調試信息以便調試你的程序。具體各個參數(shù)的用法在這里和這里有詳細說明。
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++文件內容請搜索武林網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持武林網!
新聞熱點
疑難解答
圖片精選