最近想接触一下c++和linux的操作系统,所以,在工作之余就尝试了一下。工作环境很丰富,旁边就有一台ubuntu的服务器可以供我使用,在此先感谢公司的美好的环境和同事的热心帮助,嘿嘿
读大学的时候接触了一点的redhat9的linux
版本,也试验过在redhat9上安装各种服务器,跑java程序什么的;也试验过在redhat9上写c程序,当时觉得还蛮好玩的,可是由于工作后与linux打交道的机会很少,因此这次差不多又是从头入门了,还好身边有同事比较熟悉ubuntu的系统,嗯帮了不小忙,谢谢啦
印象里知道在linux系统上编译运行c是可以使用gcc命令的,因此,首先我想尝试在ubuntu上安装
gcc编译器,在我寻求安装gcc编译器的安装方法的时候,无意
发现一个帖子说:在ubuntu10以上的版本中都自动集成了gcc编译器,这点我很开心的在ubuntu上尝试了一下:
class="java">
$ gcc --version
gcc(Ubuntu/Linaro 4.6.1 -9ubuntu3)4.6.1
Copyright...
...
看到上面那些输出我很开心,这表明我的这个linux操作系统上已经安装了gcc编译器了,我就不用在四处搜索安装ubuntu的方法了
接下来就是要运行c++程序了,我首先写了一个简单的c++程序:
#include <iostream>
#include <string>
using namespace std;
int main(){
cout<<"Enter your name,please :";
string name;
cin>>name;
cout<<"Hello, "<<name<<"welcome!"<<endl;
return 0;
}
很简单的一个c++的入门helloword程序,由于我是刚刚接触c++,生怕有些
关键字打错,因此,我核对了一遍又一遍,然后我开开心心的使用命令进行编译该文档了。
$ gcc helloword.cpp
我期望的编译通过,然后为我生成一个编译文件,然后一切就按部就班了,可是,现实却不是这样,我遇到了一个这样的error:
undefined reference to 'std::cout'
undefined reference to 'std::base_ostream...'
...
差不多有半屏的error,这里我就不多写了,总是就是想告诉我们:这个cout 这个iostream 这个cin这些词你没定义,奇怪了这些明明就是c++里面的关键字,为什么又说我没有定义呢?然后想到可能是c++的一些库文件没有引入进来,于是尝试了安装c++运行的库文件build-essentail
$ sudo apt-get install build-essentail
完成后我有实验了一遍,可是还是同样的
错误,我就纳闷了,为什么呢,后来又开始问度娘啊,功夫不负有心人,度娘终于给了我一个明确的答案:
运行c++需要使用的g++命令,而不是gcc命令,gcc是用来运行c程序的。
哦,我明白了,快试一下:
$ g++ helloword.cpp
结果:编译通过,使用ls命令查看当前目录下面的文件,发现多了一个a.out的绿色的可执行的文件
$ ./a.out
Enter your name,please:Aileen
Hello,Aileen,welcome!
上面的结果,看懂了吧,嘿嘿
如果只是写一个上面的这样的
例子,c++的类的特性就没有用到,我们肯定不能仅仅满足这样的一个例子,于是我又写了一个需要引入class的例子:
"checkbook.h"
"checkbook.cpp"
"useCheckbook.cpp"
一共三个文件,其中在checkbook.h中定义了一些public的函数和一些private的变量,根据我的
理解应该和java里面的
接口差不多的
意义。然后checkbook.cpp里就引入了checkbook.h文件,然后对checkbook.h里面的方法进行了实现(same to java里的实现类),最后在useCheckbook.cpp中引入了checkbook.h文件,当然里面定义的一些方法也可以自由使用,这里,你可以模仿者写一个简单的例子:
写好了,我很激动的使用下面的命令进行编译
$ g++ checkbook.h
$ g++ checkbook.cpp
$ g++ useCheckbook.cpp
第一条命令执行完成,使用ls查看可以发现多了一个checkbook.h.gch的文件,可是第二条命令执行的时候就出现问题了,第三条更是error多多
看来这样一个一个的编译是不能通过的,那么就需要一起编译了
$ g++ checkbook.cpp useCheckbook.cpp
结果顺利通过编译,生成了a.out文件,执行./a.out命令,顺利按照我的想法来了,OK,搞定!
另外顺便提一下,使用cc 命令一样可以用来编译c程序,使用c++也可以达到编译c++程序的同样的效果,而且在ubuntu中都已经默认的安装过了,嘿嘿,简单吧