GCC 编译 C++
2013-11-10 08:06
190 查看
原来一直以为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++可以很方便的完成,完全是画蛇添足。
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++可以很方便的完成,完全是画蛇添足。
相关文章推荐
- C++: 运算符优先级
- c++ 运算符的重载
- C++ tips .
- C++对象模型之拷贝构造函数
- v8学习---c++调用js构造函数
- C++ Alphacode
- c/c++类型转换总结
- win7-64,vs2010带的vc10环境下用dos编译C++的步骤
- 【C++ Primer】标准库类型
- 重温sunxin的VC++深入详解笔记(一)
- c语言变参函数
- c++primer第六版第七章第二题问题总结
- 插入排序 Java/C++
- C++虚函数详解
- 深入C++的new (转载)
- createsamples.cpp全过程解析
- C++获得所有网卡信息
- C语言——链表部分(包括节点的建立、总长度、显示链表、插入节点以及删除节点)
- C++ Primer — const小问题
- homework-06-C++11