? 一般而言对于 C++ 程序編译有以下4个阶段:
? gcc 最开始的时候是 GNU C Compiler就是一个 c 编译器。但是后来因为这个项目里边集成了更多其怹不同语言的编译器 GCC 就代表 the GNU Compiler Collection,所以表示一堆编译器的合集g++ 则是GCC的 c++ 编译器。
? 现在调用 gcc 的时候已经不是当初那个 c 语言编译器了,更确切地说它是一个驱动程序根据代码的后缀名来判断调用 c 编译器还是 c++ 编译器(g++)。即代码后缀是 .c则调用 c 编译器和 linker 去链接 c 的 library,代码后缀是 .cpp则调用 g++ 编译器,但是这里 gcc 不会自动和 c++
如上所述gcc 不会自动和 c++ 库链接,所以这里只编译否则会有一堆链接错误
$ ls # 可以看到编译生成 *.o 对象文件(二进制)综上,可直接使用 g++ 编译链接 c++ 程序生成可执行文件
? include 包含文件在编译的时候使用GCC 搜索头文件路径的顺序:
? gcc 的默认目录,不是由 $PATH 环境变量指定的而是由 g++ 的配置 prefix 指定。
? 链接的时候使用搜索顺序:
-I 扩展 gcc 在编译时對包含文件的搜索路径,即不使用 -I 参数时只会在上述默认路径下搜索。
-L 扩展 gcc 在链接时对库文件的搜索路径,即不使用 -L 参数时只会在上述默认路径下搜索。
? 用于编译生成动态库
? Windows下命令中使用路径时注意特殊字符要使用转义字符”\”,如下路径中包含\空格和括号,前面均加转义符”\”或者将路径用引号括起来。
? 除非指定 -c 选项,否则 cl.exe 会自动调用 link.exe 以下为 cl 中影响链接嘚常用功能(注意当参数有指定输出文件时,要带冒号:):
? CL 和 LINK 用到的环境变量有:
? 环境变量设置好后即可通過 cl 在命令行一步生成 C++ 的可执行文件,例