关于编译的一些小知识

来源:互联网 发布:音乐网站 知乎 编辑:程序博客网 时间:2024/05/21 05:21

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参数来打开标准异常

Linuxvisual studio编译器

注意:可添加/W4来开启所有警告

 

分离编译器编译源文件的过程

Linuxgcc分步编译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的可执行文件

 

0 0
原创粉丝点击