编译
指用编译器(compiler)将源代码(source code)生成二进制目标文件(object file),在Windows下也就是 .obj 文件,UNIX下是 .o 文件。编译时,编译器需要的是语法的正确,函数与变量的声明的正确,编译器只检测程序语法,和函数、变量是否被声明,函数并不需要被定义。
mac os 下编译C++的文件:
1 | g++ -c test.cpp |
-c 是compile的意思
生成二进制文件 test.o。
链接
找到所要用到函数所在的目标文件,并把它们链接在一起合成为可执行文件(executable file)。链接时,要确保编译器能找到所有被用到了的函数所在的目标文件。
mac os 下编译C++的文件:
1 | g++ test.o -o output |
生成可执行文件output。这里可以将多个文件同时
1 | g++ test.o test2.o -o output |
结合
编译和链接两个过程可以结合起来:
1 | g++ test.cpp test2.cpp -o output |
一步生成可执行文件output。中间会先编译生成目标文件,然后链接生成可执行文件。
另外如果只有一个C++文件,可以一步到位,生成执行文件a.out
1 | g++ test.cpp |