- Data.cpp
- Data.h
- User.cpp
- User.h
- 的main.cpp
Main.cpp的需要data.cpp和user.cpp。我如何鏈接或編譯它們?他們都在同一個目錄? (請更具體一些,比如先編譯哪個文件。)
我的系統是:Mac OS X,終端中的g ++編譯器。
Main.cpp的需要data.cpp和user.cpp。我如何鏈接或編譯它們?他們都在同一個目錄? (請更具體一些,比如先編譯哪個文件。)
我的系統是:Mac OS X,終端中的g ++編譯器。
最簡單的方法:
g++ Data.cpp User.cpp main.cpp
更先進的方法:用一個makefile
如何使用makefile? – 2011-05-25 14:35:37
@ cpp_noob:這是你今天的作業,你會弄明白的 – tgmath 2011-05-25 14:37:11
@cpp_noob選擇一個makefile教程,例如:http://www.opussoftware.com/tutorial/TutMakefile.htm – 2011-05-25 14:39:15
我猜你是說明事物以錯誤的方式:
Main.cpp
不不需要user.cpp
:他只需要在user.cpp
實現的類型定義。這就是爲什麼你只需要在Main.cpp
中包含user.h
。
通常情況下,每.cpp
文件變成自己的翻譯單元,並給予不同的對象文件。這些文件在鏈接進程發生時進行彙編。
基本上,步驟是:
.cpp
),則生成一個對象文件(編譯)。通常,人們使用類似Makefile
或甚至更好的工具:SConstruct
來自動執行這些步驟。
SConstruct
很好,因爲它在編譯之前也會解析源文件並構建依賴關係樹,以確保一切順利。
'SConstruct'實際上工作嗎?我已經嘗試了幾個這樣的系統(例如'Jam'),並且迄今爲止,唯一已經工作的是舊的make,並且有創建依賴關係的規則。 – 2011-05-25 16:55:10
編譯每一個seperately到目標文件。 然後將目標文件鏈接到應用程序。
如何鏈接到一個應用程序? – 2011-05-25 14:35:46
看看Eser的答案。或者使用您選擇的鏈接器。 GNU-Linker ld也許是最常見的。 – Hyperboreus 2011-05-25 14:39:41
的最快方法是
g++ main.cpp Data.cpp User.cpp -o program_name
試試這個:
g++ main.cpp Data.cpp User.cpp -o myexecutable
所有源文件編譯單獨的,所以順序並不重要。編譯之後,g ++也會進行鏈接。
爲什麼不使用Xcode?或者makefile?不要直接使用命令行來編譯更大的C++項目。 – 2011-05-25 14:33:02
Xcode只在Mac上,但我需要運行它(演示)在Linux :( – 2011-05-25 14:37:38
而且,Xcode給了我的問題:http://stackoverflow.com/questions/5284468/android-source-code-build-problem – 2011-05-25 14:44:03