【Linux】makefile文件

一些Linux程序不提供程序,看似只是提供一大堆源代码,比如.c,.cpp的文件一大堆,但往往在目录中有一个makefile文件,或者把这个makefile文件惯例性地藏在build文件夹。就是提供所谓的编译版。

使用Windows编写c,c++,习惯性地在release,debug等文件夹寻找.exe的程序员可能不知道怎么对待这样的Linux编译版。

其实很简单,进入到makefile文件的目录,用Ctrl+Alt+T打开终端,一个make指令则完成编译,之后,相应的Linux可执行程序就会生成。

如果出现如下图的错误:make:***[某某程序] 错误127

则说明你的Linux没有c++编译库,

上图的黄色部分就是Ubuntu12.04没有g++编译库所提示的错误。在《【Linux】在Ubuntu12.04中写C语言与Helloworld》(点击打开链接)中虽然指出Ubuntu12.04是自带C语言的编译库的,但是并不带C++的编译库。两者的编译指令都一样,c语言是gcc,c++是g++。不以为Windows平台中C/C++可以混写,就以为gcc同样可以编译C与C++。

此时,在Ubuntu12.04安装C++编译库很简单和其它开发环境一样,如上图,同样在联网状态,一句apt-get完事

sudo apt-get install g++

之后输入密码。

等待安装完成,就能进入makefile的目录,一句make命令就能,一些Linux编译版中得到相应的程序。

那么makefile到底是什么鬼,用一个简单的例子说明这个问题。

如下图,在文件夹中有两个很简单的文件,一个helloworld.h,里面的代码简单得不能再简单了:

#include<iostream>
//注意,在Linux中#include "iostream.h"时不能通过编译的
//Linux的g++不认这个,所谓的windows不标准写法
using namespace std;

然后还有一个helloworld.cpp,继承helloworld.h中的#include<iostram>与using namespace std;两行代码

#include "helloworld.h"

int main(){
	cout<<"helloworld"<<endl;
	return 0;
} 

本来,这个helloworld程序,在终端一个如下的命令就完成编译了:

g++ helloworld.cpp -o helloworld

但是,我把这个终端命令写在makefile中,

helloworld:
	g++ helloworld.cpp -o helloworld
clean:
	rm ./helloworld helloworld.o

指明编译完成,同时删除编译的临时文件helloworld.o

此处helloworld:与clean:仅仅是行注释的作用,不用理会。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-09 07:55:43

【Linux】makefile文件的相关文章

工程管理之makefile与自动创建makefile文件过程

(风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自动编译和链接使用的环境 想知道到Linux Makefile系统的真相么,想知道Linux Makefile系统中藏有的内在奥义么,只有我来给大家全面讲解介绍Linux Makefile系统作为Linux下的程序开发人员,大家一定都遇到过Linux Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Linux Mak

project管理之makefile与自己主动创建makefile文件过程

(风雪之隅 http://www.laruence.com/2009/11/18/1154.html) Linux Makefile自己主动编译和链接使用的环境 想知道到Linux Makefile系统的真相么,想知道Linux Makefile系统中藏有的内在奥义么,仅仅有我来给大家全面解说介绍Linux Makefile系统作为Linux下的程序开发者,大家一定都遇到过Linux Makefile,用make命令来编译自己写的程序确实是非常方便.普通情况下,大家都是手工写一个简单Linux

linux中make命令的简单使用以及Makefile文件的书写

Makefile 会不会写makele,从一个侧面说明了一个是否具备完成大型工程的能力. 一个工程中的源件不计数,其按类型.功能.模块分别放在若干个目录中,makele定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makele就像一个Shell脚本一样,其中也可以执行操作系统的命令.makele带来的好处就是"自动化编译",一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率. ma

Linux学习之Makefile文件的编写

转自:http://goodcandle.cnblogs.com/archive/2006/03/30/278702.html 目的:       基本掌握了 make 的用法,能在Linux系统上编程.环境:       Linux系统,或者有一台Linux服务器,通过终端连接.一句话:有Linux编译环境.准备:       准备三个文件:file1.c, file2.c, file2.h       file1.c:              #include <stdio.h>    

从简入难makefile文件编写,Linux C++编程,简单vi命令

 1.一个最基本的C++程序 2.第二个c++程序 3.第一个入门级别的简单的makefile 4.在makefile中定义变量. 5.编写makefile的依赖 如果start:标识后面的某个.o没有,则重新编译没有编译的那个文件 6.最终的makefile文件 总结:makefile是通过.o文件是否存在已经.cpp最后的修改时间来判断是否重新编译.o文件. 7.makefile不管理.h文件,它是编译器来进行管理的. vi: i在光标之前插入 a在光标后面插入 x删除后面的字符 dd删

Linux内核Makefile文件(翻译自内核手册)

转载自:http://www.cnblogs.com/jason-lu/p/3728198.html --译自Linux3.9.5 Kernel Makefiles(内核目录documention/kbuild/makefiles.txt) kbuild(kernel build) 内核编译器 This document describes the Linux kernel Makefiles 本文当介绍了Linux内核的Makefile === Table of Contents=== 目录

linux中Makefile文件相关内容

第一章.概述什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional(专业)的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力.因为,makefile关系到了整个

很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用make更新函数库文件 后序 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>

Linux 程序设计学习笔记----动手编写makefile文件

Befroe Beginning. 之前定了暑假的plan ,关于Linux的书籍现在在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级环境编程. 现在开始关于Linux程序设计的第一篇学习笔记. 本来打算把名字写成教程,不过觉得自己完全是新手在自学,还是写学习笔记比较负责和适合. 希望可以一起学习进步. 引入 首先我们假设这样一个场景.我们有一个程序包含了三个文件,分别是源码文件main_plus,c和function_plus.c以及头文件mydefine_p

【LINUX网络编程】Makefile文件

<Linux网络编程>(第二版) 第2章的一些读书笔记 ↓ Makefile:在一个含有较多文件的工程中,定义一系列规则来指定编译文件的顺序,可用于管理工程. Makefile指定了工程中的哪些源文件需要编译以及如何编译.需要创建那些库文件以及如何创建这些库文件.如何最后产生我们想要的可执行文件.为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,编译整个工程你所要做的唯一的一件事就是在shell 提示符下输入make命令,整个工程就完全自动编译. 首先来看一下Linux