GNU编译器g++编译c++程序:
在Windows下,进入源代码所在的路径下,在命令行中输入:
g++ -o test.exe test.cpp
将test.cpp编译生成test.exe可执行文件,如果没有-o test.exe选项,默认生成a.exe
在Linux下,进入源代码所在的路径下,在命令行中输入:
g++ -o test test.cpp
将test.cpp编译生成test可执行文件(Linux下文件没有后缀名,通过文件属性和执行权限识别),默认生成a.out,可能需要在命令尾部输入-std=c++0x来支持c++11标准
注意:可添加-Wall选项来开启所有警告,-w来忽略所有警告(严重不推荐)
微软visual studio编译器编译c++程序:
在Windows下,开始->所有程序->visual studio->visual studio tools->运行vs开发人员命令提示,在命令行中输入:
cl /EHsc test.cpp
生成test.exe文件(/EHsc参数来打开标准异常)
在Linux下无visual studio编译器
注意:可添加/W4来开启所有警告
分离编译器编译源文件的过程
Linux下gcc分步编译hello world为例
由上图可知,hello的c文件到可执行文件经历了预处理、编译、汇编、链接等几个过程,下面进行分步编译过程:
.c文件经过预处理生成.i文件(将#include里面的内容添加到.c文件中形成.i文件)
gcc -o hello.i -E hello.c
.i文件编译生成.s汇编文件
gcc -o hello.s -S hello.i
.s汇编文件汇编生成.o目标文件(二进制文件)
gcc -o hello.o -c hello.s
.o目标文件链接生成可执行文件(链接一些动态静态库)
gcc -o hello hello.o
至此生成hello的可执行文件