张东轩的博客

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。

0%

MacOS 编译C++

编译

指用编译器(compiler)将源代码(source code)生成二进制目标文件(object file),在Windows下也就是 .obj 文件,UNIX下是 .o 文件。编译时,编译器需要的是语法的正确,函数与变量的声明的正确,编译器只检测程序语法,和函数、变量是否被声明,函数并不需要被定义。
mac os 下编译C++的文件:

1
2
g++ -c test.cpp    

-c 是compile的意思
生成二进制文件 test.o。

链接

找到所要用到函数所在的目标文件,并把它们链接在一起合成为可执行文件(executable file)。链接时,要确保编译器能找到所有被用到了的函数所在的目标文件。
mac os 下编译C++的文件:

1
2
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