一: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. Xcode插件开发

    一.安装模板 1.git clone https://github.com/kattrali/Xcode-Plugin-Template.git 2.cd Xcode-Plugin-Template ...

  2. tornado中使用torndb,连接数过高的问题

    问题背景 最近新的产品开发中,使用了到了Tornado和mysql数据库.但在基本框架完成之后,我在开发时候发现了一个很奇怪的现象,我在测试时,发现数据库返回不了结果,于是我在mysql中输入show ...

  3. java怎样读取数据库表中字段的数据类型?

    用DriverManager.getConnection()得到connect, 用connect.getMetaData()得到 DatabaseMetaData, 用 DatabaseMetaDa ...

  4. 前端JS对后台传递的timestamp的转换

    后台传递的timestamp类型的数据的JSON: Date.prototype.format = function(format) { var o = { "M+" : this ...

  5. Js 读写cookies

    //写cookies函数 function setCookie(name, value)//两个参数,一个是cookie的名子,一个是值 { var Days = 30; //此 cookie 将被保 ...

  6. fmri降噪,利用spatial+temporal信息

    1.基于小波+高斯模型 <SPATIOTEMPORAL DENOISING AND CLUSTERING OF FMRI DATA>

  7. 02day2

    油滴扩展 [问题描述] 在一个长方形框子里,最多有 N(0≤N≤6)个相异的点.在其中任何-个点上放一个很小的油滴,那么这个油滴会一直扩展,直到接触到其他油滴或者框子的边界.必须等一个油滴扩展完毕才能 ...

  8. How to Download APK Files from Google Play Store

    Evozi, an Android app developer, offers a one-click online APK download app that lets you download t ...

  9. 给IT新男的15点建议:苦逼程序员的辛酸反省与总结

    很多人表面上看着老实巴交的,实际上内心比谁都好强.自负.虚荣.甚至阴险.工作中见的多了,也就习惯了. 有一些人,什么事都写在脸上,表面上经常得罪人,甚至让人讨厌.但是他们所表现的又未必不是真性情. 我 ...

  10. 不同语言的Unix时间戳

    如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)? Java time JavaScript Math.round(new Date().getTime()/1000)ge ...