`
李成林_89
  • 浏览: 37477 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

在ubuntu下跑c++程序

阅读更多
最近想接触一下c++和linux的操作系统,所以,在工作之余就尝试了一下。工作环境很丰富,旁边就有一台ubuntu的服务器可以供我使用,在此先感谢公司的美好的环境和同事的热心帮助,嘿嘿

读大学的时候接触了一点的redhat9的linux版本,也试验过在redhat9上安装各种服务器,跑java程序什么的;也试验过在redhat9上写c程序,当时觉得还蛮好玩的,可是由于工作后与linux打交道的机会很少,因此这次差不多又是从头入门了,还好身边有同事比较熟悉ubuntu的系统,嗯帮了不小忙,谢谢啦

印象里知道在linux系统上编译运行c是可以使用gcc命令的,因此,首先我想尝试在ubuntu上安装gcc编译器,在我寻求安装gcc编译器的安装方法的时候,无意发现一个帖子说:在ubuntu10以上的版本中都自动集成了gcc编译器,这点我很开心的在ubuntu上尝试了一下:
$ 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中都已经默认的安装过了,嘿嘿,简单吧
3
6
分享到:
评论
6 楼 scyllor 2014-07-10  
女朋友在搞 临时学习 以便今后支援 作为helloworld挺好的
5 楼 李成林_89 2013-05-23  
ray_linn 写道
好多概念性的错误....小孩子玩玩泥巴而已。

亲,有问题给我指出来呀,我刚开始学c++ 自学的,没有老师,希望多指教呀~
4 楼 ray_linn 2013-05-17  
好多概念性的错误....小孩子玩玩泥巴而已。
3 楼 bewithme 2013-05-16  
楼主啥公司
2 楼 jjcang 2013-05-16  
真是无语了。。。。
1 楼 zhukewen_java 2013-05-16  
2 13 青年欢乐多啊

相关推荐

    Linux c++ 实现哈夫曼文件压缩与解压+迷宫

    使用哈夫曼编码实现文件压缩与解压,产生随机迷宫,并实现最短通路(程序是在ubuntu18.10下跑的)

    webrtc-cpp-sample:在C ++上使用WebRTC的示例程序

    WebRTC C ++示例在C ++上使用WebRTC(DataChannel)的示例程序(README.en.md是此文件的英文翻译。) 使用C ++中的WebRTC DataChannel的示例代码。要求Mac OS X 的Ubuntu编译$ cd $ git clone --depth 1 ...

    rapl-tools:使用 Intel 的 RAPL 接口监控 CPU 功率的工具

    rapl工具使用 Intel 的 RAPL 接口监控 CPU 功率的工具项目内容AppPowerMeter - 测量能量并监视应用程序的功率 PowerMonitor - 监视系统的 CPU 功率 Rapl.cpp - CPP 类设计用作 RAPL 接口跑步... make在 Ubuntu 上设置在

    bew

    赶紧跑: bew 但是您也可以使用以下命令运行桌面Web应用程序: bew " https://twitter.com " --app-name " Twitter " --app-icon " /path/to/icon.png " --font " Ubuntu " --no-scrollbar --user-agent " ...

    RayTracing_Parallel:这个存储库有两个使用 OpenMP 和 CUDA 的并行光线追踪版本

    它在 ubuntu 14.04 上实现和测试,使用 g++ 4.8.2 编译。 有一个构建三个可执行文件的极简生成文件:RayTracing RayTracing_openmp 和 RayTracing_cuda。跑步可执行文件将在文件夹“build”中创建。 要运行该程序,...

    基于zigbee和stm32的智能家居系统源码+项目说明,上位机使用Qt编写(毕业设计).zip

    &gt;默认程序编译完成后,可执行程序在bin目录下 可以在工程配置文件中进行修改! ``` DESTDIR = $$PWD/bin ``` 关于交叉编译,移植到ARM平台,可以参考我的这篇文档,介绍很详细! [传输门][2] 如果有什么问题欢迎...

    ssltrace:ssltrace挂钩应用程序的SSL库以记录所有SSL连接的密钥数据

    默认情况下,此数据以Wireshark兼容格式在stderr上输出。 支持的SSL库: 的OpenSSL 新高中[1] GnuTLS [1] NSS的最新版本还支持SSLKEYLOGFILE环境变量,该变量可能更易于使用。建造构建依赖关系: 的libdw OpenSSL...

    g13:g13的libusb驱动程序

    对于Ubuntu(15.10) 须藤apt-get install libusb-1.0-0-dev 须藤apt-get install libboost-all-dev 建造 通过运行进行编译 make 如果要以用户身份运行守护程序,请将文件91-g13.rules放在/etc/udev/rules.d/(或...

    IPCameraViewer

    在 Ubuntu 上: sudo apt-get install g++ qt4-default libvlc-dev vlc libqjson-dev 在 Archlinux 上: pacman -S gcc-multilib qt4 libvlc vlc qjson 编译 mkdir build cd build qmake ../src make 注意:如果...

    LibraryManagementSystem:OOP课程

    环境与依赖Ubuntu需要安装MongoDB依赖mongo-cxx-driver()编译在根目录下执行make即可运行先启动 MongoDB。在根目录下执行./main即可架构本工程大体分为 5 部分。分别是:核心类数据库(Database):负责直接与...

    aarecovery:抗锯齿恢复技术的实现

    它作为在过滤图像中潜在损坏的某些区域中的梯度的调整来执行。 依赖 本项目使用 cmake。 mac osx 如果您还没有 ,请下载并安装它。 为了简化安装,您可以使用 : brew install cmake linux (ubuntu) sudo apt-...

    Face-Feature-Detection:一个非常简单的程序,使用OpenCV Haar级联分类器从面部检测特征

    对于Ubuntu / Linux,运行apt-get install libopencv-dev 对于Mac OS X,运行brew install opencv 对于Windows,浏览此存储库 怎么跑 只需运行make ,然后运行./Face-Feature-Detection 。 预习

Global site tag (gtag.js) - Google Analytics