Linux 下 g++ 多文件編譯

1 假設(shè)都在同一個(gè)文件夾下
main.cpp func.cpp func.h
a> g++ -c func.cpp 生成 func.o 文件
b> g++ -c main.cpp 生成 main.o文件
c> g++ main.o func.o -o demo 將多個(gè)文件鏈接生成 demo.exe
一般不對.h 文件進(jìn)行編譯

include 'func.h' 從當(dāng)前文件尋找頭文件

include <func.h> 先搜索 -i 的指定路徑, 然后尋找本地路徑

2 不在同一個(gè)文件夾下
則應(yīng)該遵循如下風(fēng)格, 編譯則需要添加參數(shù) -I 指定路徑
| --func1
| |--func1.cpp
| |--func1.h
| -- func2
| |--func2.cpp
| |--func2.h
| -- main
| |--main.cpp

3 -I 指定操作的路徑
-c 將文件編譯, 但是不鏈接, 將代碼變成機(jī)器碼
g++ -c func.cpp -o func.o
-o 鏈接器: 將.o文件和依賴的庫文件 鏈接起來 編譯成可執(zhí)行的文件
gcc -o main main.o ../myinclude/myhead.o

4 編譯要求
a> 如果工程所有文件都沒有編譯過,則所有的都需要編譯,并鏈接
b> 如果部分文件被修改,則編譯部分文件 并鏈接目標(biāo)
c> 如果頭文件被修改 只需要編譯引用頭文件的文件并鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 多個(gè)文件編譯在linux下編譯,下面有三個(gè)文件,分別是1.cpp 和 2.cpp 和myhead.h 文件。 1....
    DayDayUpppppp閱讀 66,821評論 3 29
  • 目標(biāo):運(yùn)行C++代碼 example:有func.h,func.cpp, main.cpp - .h無需編譯,但....
    tuhaha閱讀 551評論 0 0
  • 作為一名老牌的編程語言,c++還是很值得人們來研究和學(xué)習(xí)的,該文章就其編譯器g++作出分析和論述。 g++為GNU...
    yangsir閱讀 5,206評論 1 3
  • 最近在Linux下編程發(fā)現(xiàn)一個(gè)詭異的現(xiàn)象,就是在鏈接一個(gè)靜態(tài)庫的時(shí)候總是報(bào)錯(cuò),類似下面這樣的錯(cuò)誤: 關(guān)于undef...
    NooneIam閱讀 3,187評論 0 0
  • 一、g++編譯流程: 預(yù)處理——>編譯——>匯編——>鏈接 二、g++編譯指令 (注意大小寫)假設(shè)我有一個(gè)main...
    簡臾閱讀 9,601評論 0 3

友情鏈接更多精彩內(nèi)容