gcc 和 g++的一点儿解释

之前在装双系统时的分区不当(只给根分区/5个G的容量)终于在前两天体验KDE桌面时彻底暴露出来了。所以只好重装了系统,使分区更合理一些。可是所有的环境都得重新配置了,比如Eclipse with CDT,Qt SDK等。

记得之前在ubuntu里配置C/C++环境时没有碰到什么问题的,基本步骤如下:
1.安装好Eclipse(GALILEO)后,安装C/C++的插件CDT.在Eclipse里,Help->Install new software->Add里将CDT的地址(http://download.eclipse.org/tools/cdt/releases/galileo)添加进去即可。
2.安装g++编译器(包括了gcc的):sudo apt-get install g++。
好像这样就好了。可是今天按照这样安装好了之后,在Eclipse里写了一个C++的HelloWorld的测试程序,编译运行时总是报错"Launch failed, Binary filed not found"。我就愣了,根本不知道是什么原因导致的,网上一查,发现,遇到类似问题的同志还不少,但最终也没有发现解决问题的办法。于是我想试着在终端里试试看能不能通过,这样就知道到底是整个环境配置的有问题还是Eclipse环境配置的有问题了。
终端输入:gcc test.cpp (或者gcc -c test.cpp 、gcc test.o -o test)
可是得到了错误,主要是:In function 'main': test.cpp:(.text+0xa:undefined reference to 'std::cout')
于是我怀疑是自己的整个环境配置地有问题了:
我先搜索Linux下C/C++环境的配置,发现普遍的做法都是先安装build-essential,而gcc编译器是系统默认安装好的,也可以自己手动安装:sudo apt-get install gcc 或者sudo apt-get install g++,如果有更新,会安装更新的。
于是我就照着,安装了build-essential,即: sudo apt-get install build-essential
发现确实又安装了额外的3M多的其它的包,装好后,重启Eclipse,重新编译运行,兴奋地发现问题没有了!!!
当我确信系统环境没问题了后,然后我又接着在终端里重新对test.cpp:gcc test.cpp
还是同样的错误:undefined reference to 'std::cout'
好吧,我接着这个错误查,终于在一个英文论坛上看到原因了:gcc是GNU C Compiler,而g++是GNU C++ Compiler。在终端输操作:
root@toshiba:~# dpkg -l g++
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  g++            4:4.4.4-1ubunt The GNU C++ compiler
root@toshiba:~# dpkg -l gcc
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
ii  gcc            4:4.4.4-1ubunt The GNU C compiler
我的源文件是test.cpp,而我用gcc去编译,能识别std::cout才怪呢,真是笨到家了。用g++编译test.cpp,一切正常,然后我又写了c的HelloWorld测试程序,用gcc编译,也一切正常。
到此为止,两个问题都好了,总结一下:
1.Eclipse编译C/C++程序,出现"Launch failed, binary files not found"时,注意检查一下是否是环境配置不完善,导致有些头文件没有包括进来。先安装build-essential: sudo apt-get install build-essential;然后安装或更新gcc或g++: sudo apt-get install gcc 或 sudo apt-get install g++
2.gcc和g++是GNU的两个不同的编译器,一个是用来编译c源程序的,另一个是用来编译C++源程序的。
用gcc来编译cpp或者用g++编译c都会出问题的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值