多文件編譯
之前知乎抄的vscode配置
https://www.cnblogs.com/esllovesn/p/10012653.html這個是簡化版也是更方便版的,建議直接看這個。
https://www.zhihu.com/question/30315894這個是知乎原文,比較復雜。
進行少量的多文件編譯,C語言直接用gcc 源文件1.c 源文件2.c 頭文件1.h這樣就好,C++用g++。默認生成a.exe,加-o可指定輸出文件名,其余選項百度gcc使用教程。如果需要多次編譯可以寫一個批處理。
- 進行大量的多文件編譯,請學習如何寫makefile或使用cmake。然后把tasks的命令改成調用make等。如果你想使用別人的庫,比如ffmpeg,可能需要在命令中指定-I、-l(小寫的L)、-L。具體參數閱讀那個庫的文檔。還可能需要把路徑添加到c_cpp_properties.json和compile_flags.txt里來配置Intellisense。這些情況下可以考慮單獨建一個工作區,不要和單文件編譯的共用。其實不新建工程(Project)、只是單文件就能調試,是不利於以后使用和理解大型IDE的。不過初學也不用掌握那么多,不要覺得建工程很麻煩、不建工程就能編譯很強就是了。總之這些和VSC無關,用其它IDE或是手動編譯也會遇到差不多的問題,也有點復雜。
.c文件
-->預處理-->.i文件
-->編譯-->.s文件
-->匯編-->.o文件
-->鏈接-->.exe文件
gcc -E
(E大寫)預處理(preprocessing)。不會檢查語法錯誤。win10需要使用重新定向生成.i文件gcc -E test.c > test.i
或者指定文件名gcc -E test.c -o test.i
,否則只會輸出到stdout。
gcc -S
(S大寫)編譯(compiling)。將.i文件編譯成.s文件,即使不指定文件名也會生成與.i文件同名的.s文件,即gcc -S test.i -o test.s
與gcc -S test.i
相同。並且檢查語法錯誤是在編譯過程進行的。
gcc -c
(c小寫)匯編(assembling),將.s文件轉換成機器能執行的機器代碼.o文件,同樣即使不指定文件名也會生成與.s文件同名的.o文件,gcc -c test.s -o test.o
與gcc -c test.s
相同。
gcc x.o
或gcc x.o -o x.exe
鏈接(linking)將機器碼.o文件連接成可執行文件.exe。