gcc编译c++程序

原来一直以为gcc是c的linux下的编译器,g++是c++的linux下的编译器,今天偶尔看到一个说明文档,大体内容是gcc已经不单纯的可以编译C语言,它支持C, C++, Objective-C, Fortran, Java, Ada的编译,如果不指名编译语言,默认由后缀名决定。感觉好神奇,就亲自想用gcc来编译一个c++的helloworld。步骤如下:

1.用vim直接打开hello.cpp,编译一个简单的hello world,用:wq命令保存,退出。

2.直接最简单的默认命令gcc hello.cpp, 哦,竟然报错 gcc: error trying to exec 'cc1plus' ...,我刚编译了一个c的程序,gcc编译器肯定能用的,难道gcc不能编译c++,不会哦,官方文档应该不会有错。于是上网搜了一下,说报错的原因是因为Ubuntu虽然默认安装了gcc编译器但是并没有安装所有的C语言的类库和工具,那就安装吧, 命令: sudo apt-get install build-essential 安装完成。

3.按向上键或者重新写一下 gcc hello.cpp,晕咯,这次报错报的更多,如下/tmp/cc0jIPMU.o: In function `main':

hello.cpp:(.text+0x14): undefined reference to `std::cout'

hello.cpp:(.text+0x19): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'

hello.cpp:(.text+0x21): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)' ...

简直要晕死了,这次又Google,最后的解释是虽然gcc可以用来编译c++但是它不会自动的调用链接c++的库,你需要自己手动链接,使用如下命令:gcc -l stdc++ hello.cpp,顺利编译通过,使用./a.out查看,打印出hello world,成功。

4.最后说明一下用g++可以很方便的完成,完全是画蛇添足。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值