- 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