(转)g++命令

gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。
g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。
其实编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接。

下面以Test.cpp为例:

命令: g++ Test.cpp
功能:生成默认为a.exe的文件,这个过程包含了编译和链接。
再说下-o命令,-o命令表示输出的意思,gcc/g++命令是非常灵活的,你不指定输出的文件名的时候默认生成的是.exe文件。
你要输出Test.exe的话可以用:g++ -o Test.exe Test.cpp。-o命令是输出的意思,这样就输出了Test.exe。

gcc/g++在执行编译工作的时候,总共需要以下几步:

  1. <span style="font-family:‘Microsoft YaHei‘;font-size:16px;">  /*************************
  2. Test.cpp
  3. *************************/
  4. #include <IOSTREAM>
  5. static int t = 1;
  6. #define T 9
  7. using namespace std;
  8. typedef int Status;
  9. int main()
  10. {
  11. Status i = 1;
  12. cout << T * i << endl; //Test Cout
  13. return 0;
  14. }</span><span style="font-family: ‘Microsoft YaHei‘; font-size: 18px; ">
  15. </span>

1.预处理,生成.i的文件[预处理器cpp]

命令:g++ -E Test.cpp > Test.i

功能:输出预处理后
的文件,linux下以.i为后缀名。只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里
。这一步主要做了这些事情:宏的替换,还有注释的消除,还有找到相关的库文件。用编辑器打开Test.i会发现有很多很多代码,你只需要看最后部分就会发
现,预处理做了宏的替换,还有注释的消除,可以理解为无关代码的清除。下面是Test.i文件的最后部分,可以看见宏的替换和注释的消除。

  1. <span style="font-family:‘Microsoft YaHei‘;font-size:16px;"># 5 "Test.cpp" 2
  2. static int t = 1;
  3. using namespace std;
  4. typedef int Status;
  5. int main()
  6. {
  7. Status i = 1;
  8. cout << 9 * i << endl;
  9. return 0;
  10. }</span>

2.将预处理后的文件不转换成汇编语言,生成文件.s[编译器egcs]

命令:g++ -S Test.cpp
功能:会生成Test.s文件,.s文件表示是汇编文件,用编辑器打开就都是汇编指令。

3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]

命令:g++ -c Test.cpp 
功能:.o是GCC生成的目标文件,除非你是做编译器和连接器调试开发的,否则打开这种.o没有任何意义。二进制机器码一般人也读不了。

4.连接目标代码,生成可执行程序[链接器ld]

命令:g++ Test.o -L F:\vs2008\VC\include\iostream
功能:将.o文件与所需的库文件链接整合形成.exe文件,这就是可执行文件。-L 表示链接,这里我后面写的是绝对路径,相对各人电脑不同

在上面各个步骤中你可以用-o命令输出你自己想要的各种名字。比如最后一个命令,用下面的输出Test.exe
你可以g++ Test.o -o Test.exe -L F:\vs2008\VC\include\iostream

写了上面的就希望能够理解整个源文件是怎么变成可执行文件的,gcc/g++确实是很给力的啊····(*^__^*)

时间: 2024-11-05 18:49:21

(转)g++命令的相关文章

gcc/g++ 命令行参数

这些常用的 gcc/g++ 命令行参数,你都知道么? 1. gcc -E source_file.c -E,只执行到预编译.直接输出预编译结果. 2. gcc -S source_file.c -S,只执行到源代码到汇编代码的转换,输出汇编代码. 3. gcc -c source_file.c -c,只执行到编译,输出目标文件. 4. gcc (-E/S/c/) source_file.c -o output_filename -o, 指定输出文件名,可以配合以上三种标签使用. -o 参数可以被

gcc/g++命令认识

gcc & g++是gnu中最主要和最流行的c & c++编译器 . g++用来针对c++的处理命令,以.cpp为后缀,对于c语言后缀名一般为.c.这时候命令换做gcc即可. 下面以Test.cpp为例: 命令: g++ Test.cpp 功能:生成默认为a的可执行文件,这个过程已经包含了编译和链接过程. 再说下-o命令,-o命令表示输出的意思,gcc/g++命令是非常灵活的,你不指定输出的文件名的时候默认生成的是可执行文件. 你要输出Test的可执行程序的话可以用:g++ -o Test

gcc/g++ 命令的常用选项

gcc/g++ 命令的常用选项格式(选项 解释) -o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的.如果FILE没有指定,缺省文件名是a.out. -c 只编译生成目标文件,不链接 -m486 针对 486 进行代码优化. -O0 不进行优化处理. -O 或 -O1 优化生成代码. -O2 进一步优化. -O3 比 -O2 更进一步优化,包括 inline 函数. -w 关闭所有警告,建议不要使用此项 -Wall 允许发出gcc能提供的所有有用的警告,也可以用-W(warn

gcc/g++命令

参考:http://www.cnblogs.com/cryinstall/archive/2011/09/27/2280824.html 注意:gcc和g++是linux系统下的编程常用指令,C语言文件用gcc,cpp文件用g++. 1.预处理  g++ -E filename.cpp > filename.i 功能:输出预处理后的文件,linux下以.i为后缀名.只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 . 这一步主要做了这些事情:宏的替换,还有注释的消除,还有找到相关的

记G++命令运算符编译C++

调用C++编译器的命令因编译器和操作系统的不同而不同,常用的编译器是GNU编译器和微软Visual Studio编译器.调用GNU编译器的默认命令是g++   --<primer> gcc 和 g++分别是GNU的C和C++的编译器.一般分成四步: 1. 预处理,生成.i的文件 [预处理器cpp] 2. 将预处理后的文件不转换成汇编语言,生成.s文件[编译器egcs] 3. 有汇编变为目标代码(机器代码)生成.o文件[汇编器as] 4. 连接目标代码,生成可执行程序 [链接器] 下面给出一些例

sed命令n,N,d,D,p,P,h,H,g,G,x解析

1. sed执行模板=sed '模式{命令1;命令2}' 即逐行读入模式空间,执行命令,最后输出打印出来 2. 为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\n的内容,并追加到默认输出之前. sed并不对每行末尾\n进行处理,但是对N命令追加的行间\n进行处理,因为此时sed将两行看做一行. 2-1.n命令 n命令简单来说就是提前读取下一行,覆盖模型空间前一行(并没有删除,因此依然打印至标准输出),如果命令未执行成功(并非跳过:前端条件不匹配),

sed命令n,N,d,D,p,P,h,H,g,G,x解析2

摘自: https://blog.csdn.net/xiexingshishu/article/details/50514132 sed命令n,N,d,D,p,P,h,H,g,G,x解析 2016年01月13日 23:55:32 kgduu 阅读数:4342更多 个人分类: shell 1. sed执行模板=sed '模式{命令1;命令2}' 即逐行读入模式空间,执行命令,最后输出打印出来 2. 为方便下面,先说下p和P,p打印当前模式空间内容,追加到默认输出之后,P打印当前模式空间开端至\n的

Sed命令n,N,d,D,p,P,h,H,g,G,x解析3

摘自:https://blog.csdn.net/WMSOK/article/details/78463199 Sed命令n,N,d,D,p,P,h,H,g,G,x解析 2017年11月06日 23:21:44 DataCareer 阅读数:503 标签: sedlinuxshell 更多 个人分类: Shell 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/WMSOK/article/details/78463199 前言 sed执行模板=s

npm 命令参数--save,--save-dev,-g 的区别

常用命令: npm init :创建package.json这个文件 npm run dev :执行npm script中的命令 一.我们在使用 npm install 安装模块的模块的时候 ,一般会使用下面这几种命令形式: npm install moduleName : 安装模块到项目目录下 npm install moduleName -g: -g 将模块安装到全局,具体安装到磁盘哪个位置,要看npm config prefix的位置.查看:npm config ls,修改:npm con