g++ 编译步骤及参数说明

本文详细介绍了GCC和G++编译器的使用方法,包括编译命令、参数及常见误区。阐述了如何利用这些工具进行C/C++程序的编译与链接,并澄清了一些关于GCC和G++使用的常见误解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、g++编译程序得命令

    例如:第一步:g++ demo.cpp

               第二步:g++ -c demo.cpp

               第三步:g++ demo.o -o  (别名可有可无,没有时默认为a)

               第四步:./a

 

  具体得参数列表:

- c 编译成目标文件.o
- o指定输出文件名,输出文件名跟在-o后面,用空格分隔。如果不使用这个选项,缺省的输出文件名为a.out。
- g产生有调试信息的可执行文件
- w不产生警告信息
- l 连接指定的库文件
- L指定库文件的路径
- i 要包含的头文件
- I 头文件的路径
- E 显示预处理后的程序文件到屏幕上,可以用-o指定输出到文件
- S 产生汇编程序
如果没有c、E、S就会生成可执行文件

 

  注意:

误区一:gcc只能编译C代码,g++只能编译C++代码。

两者都可以,但请注意:

(1)后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是C++程序,注意,虽然C++是C的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。

(2)编译阶段,g++会调用gcc,对于C++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的。

 gcc可以用来编译c++但是它不会自动的调用链接c++的库,你需要自己手动链接,使用如下命令: gcc -l stdc++ hello.cpp,顺利编译通过

误区二:gcc不会定义__cplusplus宏,而g++会

实际上,这个宏只是标志着编译器将会把代码按C还是C++语法来解释,如上所述,如果后缀为.c,并且采用gcc编译器,则该宏就是未定义的,否则,就是已定义。

 

误区三:编译只能用gcc,链接只能用g++

严格来说,这句话不算错误,但是它混淆了概念,应该这样说:编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。因为gcc命令不能自动和C++程序使用的库联接,所以通常使用g++来完成联接。但在编译阶段,g++会自动调用gcc,二者等价。

          注:符号链接是一种特殊类型的文件,它的内容只是一个字符串。它可能指向一个存在的文件也可能什么都不指向。当您在命令行或程序里提到符号链接的时候,您实际上进入了它指向的文件,前提是这个文件是存在的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值