一:hello world

sudo vim hello.cpp

输入  g++ -o hello hello.cpp  获得hello

输入  ./hello 运行,显示结果hello world! ,  ./表示在同一目录下。

二,makefile

1、基本的make

makefile编写据传闻应该是linux环境开发者必备技能,本人小白,暂时写一点儿练习时使用的,以后如果有其他改进另行添加。另外,网上密密麻麻的复制粘贴的“如果一个项目有3个头文件,8个c文件”的教程,虽然不知道原作者是谁,但是慢慢琢磨和学习,这个教程本身还是很不错的,依然是helloworld,虽然并不用这么麻烦,作为练习还是写了一个makefile

sudo vim makefile

当前目录控制台输入: make 之后会在控制台打印出make文件中的命令行

多出来hello 和 hello.o两个文件

执行:./hello 结果 :hello world!

执行:make clean 结果 :删除.o扩展名的文件

由此我们看出,hello为最终结果,而.o都是一些中间代码,格式自上而下进行:

目标名: 依赖文件

(tab)命令输入

     这里需要强烈注意的是:命令前必须有一个tab而不是四格空格。因为根据规则可以知道,在执行make时,系统会认为tab之后的是一个可执行的命令行,所以make文件其余地方对其或者其他处理请不要用tab,同时vim很多人下载的网上大神配置好的vim中会有空格替代tab的设定,可以通过在个人目录的.vimrc.local(每个人的可能不一样的文件)中输入     set noexpandtab      解决这个问题。此外,有教程说makefile文件的冒号前后必须空格,可能根据不同的规范要求吧,并没有tab这样一旦不照做崩盘的情况出现。

2、命名为makefile是因为make会自动识别当前目录下的文件,命名为makefile,Makefile据说都可以。

如果命名为其他的文件,同时还要make的话输入命令行

make -f 文件名

如果需要执行make中的clean命令,输入命令行

make -f 文件名 clean

3,强大的省略功能(缩写简化)

这一部分因为我还没有用到太复杂的功能,充其量也就是两个cpp一个h这样的文件组合进行测试,所以以下为假设:

如果我们的main由很多中间代码合成,我们正常情况

如果这么书写那么一定会出很大问题,尤其是大项目的内容更多,改着改着没准眼一花就写错了各地方,然后各种崩盘。所以我们可以用声明变量的方法,将重复的而且过长的子串提取出来。看上去整洁了不少的样子,修改的时候问题也会简化

另外就是makefile的推导功能,这个还是比较喜欢的,因为小白经常gcc g++ -c -o什么的感觉乱糟糟,所以借鉴了之前的那篇经典教程,gnu是可以自动推导判断出你到底想要什么,如果目标是half.o那么make就会寻找到half.c或者cpp之类的作为依赖,这时候只需要填写half.o所需要的其他的内容,比如.h文件,如下图所示两种效果相同。表示本人暂时没接触到也并不喜欢如果多个.o文件依赖同一.h文件进行缩写的那种,因为缺乏了美感和层次感。

linux下开发c++第二弹--helloworld与makefile的更多相关文章

  1. linux下开发c第一弹--相关环境需求

    我用的是mac,mac和linux一般集成了一定的开发环境,基本上需要gcc.vim.gdb之类的,linux下需要apt-get,mac下homebrew的brew install都可以解决问题.同 ...

  2. 使用eclipse在linux下开发C/C++

    一直在Linux下开发,苦于没有IDE,一般都是自己编写Makefile,然后在windows下用文本编辑器ftp打开文件编辑,然后在linux下完成编译.调试代码也只能是命令行用gdb进行调试,相当 ...

  3. linux下开发C语言需要安装的manpages手册

    linux下开发C代码需要安装的manpages: $ sudo apt-get install manpages$ sudo apt-get install manpages-dev$ sudo a ...

  4. Linux下开发STM32单片机

    一开始学习51单片机就是用的MDK这个IDE软件,IDE软件虽然看起来直观好像更加容易入门(因为有界面看起来很形象),但是实际上IDE却是向我们这些入门人员隐藏了背后真实存在的过程,让我们以为编译就是 ...

  5. linux下开发板网络速度测试记录

        由于做的项目对于网络和USB的读写速度有很高的要求,因此新拿回来的板子要测试网络和usb的最佳传输速度.要考虑不少因素,先把我能想到的记录下来.     测试的环境是开发板和ubuntu虚拟机 ...

  6. 05 Linux下开发JSP项目(Hello world)

    测试环境: 主机系统:Win 7 虚拟机:VMware workstation 11.1.0 虚拟机OS: centos 6.5 64位 Kernel 2.6.32-431-e16.x86_64 My ...

  7. wxWidgets 在 Linux 下开发环境配置

    本文基于 CodeBlocks (16.0.1) 和 wxWidgets (3.0.2) 搭建 Linux 下 GUI 开发环境. 1. 安装 CodeBlocks Ubuntu 默认的源当前 Cod ...

  8. linux下开发,解决cocos2d-x中编译出现的一个小问题, undefined reference to symbol 'pthread_create@@GLIBC_2.2.5'

    解决cocos2d-x中编译出现的一个小问题 对于cocos2d-x 2.×中编译中,若头文件里引入了#include "cocos-ext.h",在进行C++编译的时候会遇到例如 ...

  9. Linux下开发环境的搭建(For C++ OIer)

    说句实话,对于OIer来说,Linux真的是个很好的开发平台. 这里既没有游戏的喧嚣,也没有广告的打扰,gcc/g++早已预装,一切已为你准备好......(???)即使对于日常使用,也绰绰有余. 如 ...

随机推荐

  1. Image.FrameDimensionsList 属性备注

    Image.FrameDimensionsList 属性 .NET Framework 2.0   获取 GUID 的数组,这些 GUID 表示此 Image 中帧的维数. 命名空间:System.D ...

  2. git跨平台换行符不兼容

    https://help.github.com/articles/dealing-with-line-endings/#platform-all

  3. hdu 1575 Tr A (矩阵快速幂入门题)

    题目 先上一个链接:十个利用矩阵乘法解决的经典题目 这个题目和第二个类似 由于矩阵乘法具有结合律,因此A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2.我 ...

  4. 概述什么是OSGi框架

    现 在越来越多的Java开发人员在谈论OSGi是有其道理的.在几年前上学的时候我进行了比较多的Eclipse插件开发,当时就亲身感觉到Eclipse 插件体系的灵活与强大,而该体系与OSGi也可谓一脉 ...

  5. HDU 4946 共线凸包

    题目大意: 一些点在一张无穷图上面,每个点可以控制一些区域,这个区域满足这个点到达这个区域的时间严格小于其他点.求哪些点能够控制无穷面积的区域. 题目思路: 速度小的控制范围一定有限. 速度最大当且仅 ...

  6. 函数fil_node_create

    /*******************************************************************//** Appends a new file to the c ...

  7. inline-block和text-indent在IE6,IE7下同时使用的兼容问题解决方法

    在实际应用中,考虑到seo,很多button,icon都要用到inline-block和text-indent来处理,例如: <a href="#">Button< ...

  8. codeforces 340C Tourist Problem(简单数学题)

    题意:固定起点是0,给出一个序列表示n个点,所有点都在一条直线上,其中每个元素代表了从起点到这个点所走的距离.已知路过某个点不算到达这个点,则从起点出发,到达所有点的方案有许多种.求所有方案走的总路程 ...

  9. BZOJ 3166 Alo

    处理出每个数最靠近它的左右两个比它大的数. 然后可持久化trie. #include<iostream> #include<cstdio> #include<cstrin ...

  10. 分享一段H264视频和AAC音频的RTP封包代码

    1. H264视频的RTP封包 static int h264_parse(Track *tr, uint8_t *data, size_t len) { h264_priv *priv = tr-& ...