【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:仅仅是行注释的作用,不用理会。



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值