一、Makefile的规则
Makefile的规则如下:
target ... : prerequisites ...
command
这里的command是指生成或是处理target随执行的命令;prerequisites指的是生成target所需要依赖的文件.
二、一个示例
自行编写了2个C文件(get_max.c,fn_max.c),我们为了完成前面所述的那三个规则,我们的Makefile应该是下
面的这个样子的。
SHELL = /usr/bin/ksh
LINK.c = cc
get_max:get_max.o fn_max.o
<tab>cc -o get_max get_max.o fn_max.o
get_max.o:get_max.c
<tab>cc -c get_max.c
fn_max.o:fn_max.c
<tab>cc -c fn_max.c
clean:
<tab>rm get_max.o fn_max.o
我们可以把这个内容保存在文件为“Makefile”或“makefile”的文件中,然后在该目录下直接输入命令“make”
就可以生成执行文件get_max.。如果要删除执行文件和所有的中间目标文件,那么,只要简单地执行一下
“make clean”就可以了。
三、makefile中使用变量
比如,我们声明一个变量,叫objects,在makefile一开始就这样定义:
objects=get_max.o fn_max.o
于是,我们就可以很方便地在我们的makefile中以“$(objects)”的方式来使用这个变量了,于是我们的改良版
makefile就变成下面这个样子:
SHELL = /usr/bin/ksh
LINK.c = cc
objects=get_max.o fn_max.o
get_max:${objects}
<tab>cc -g -o get_max ${objects}
fn_max.o:fn_max.c
<tab>cc -c fn_max.c
clean:
<tab>rm ${objects}
于是如果有新的 .o 文件加入,我们只需简单地修改一下 objects 变量就可以了。
分享到:
相关推荐
一键编译所有C源程序 makefile编写,非常简单的例子
有多个头文件和传文件的opencv小伙伴可以使用本Makefile。只需要将所有的c/c++文件和头文件放在同一个文件下makefile就可以自己去找依赖,前提是opencv安装成功而且配置好环境,如果没配置好文件的请参考我的另外一...
│ 1动手编写第一个makefile编译c++多文件项目 │ 2g++分步编译演示从源码到执行程序的四步 │ 3makefile运行流程分析并使用变量改写项目 │ 4makefile自动推导目标代码配置和伪目标clean清理 │ 5使用make编译动态...
嵌入式用的2440上的i2c驱动源代码和Makefile编译文件和测试程序源代码
Android 编译环境本身比较复杂,且不像普通的编译环境:只有顶层目录下才有Makefile 文件,而其他的每个 component 都使用统一标准 Android.mk. Android.mk 文件本身是比较简单的,不过它并不是我们熟悉的 Makefile,而是...
在Linux里写C语言代码一般用gcc编译,如果是一些小的程序可以使用gcc命令编译,但是当我们写一个大的项目的时候,我们总会把头文件,主函数,子函数等分别放到一个文件里,这样可以让代码看起来没有那么长,在排错的...
嵌入式i2c驱动源代码和Makefile编译文件源代码和相应的应用层测试程序源代码
问题:原来有单个文件tcpclient.c,运行gcc -o tcpclient tcpclient.c可以顺利完成编译,并能与... 但是,使用Makefile来编译,总是出现如下multiple definition of类的错误: 代码如下:dingq@u1110-120628:~/hwsvn/2s
LINUX下多个c程序编译链接的程序,经验证可以执行,并搭配了MAKEFILE文件
其中涉及到5个文件:(1)6.sh为由一个菜单选择各种功能——可以演示编译c程序的过程以及静态与动态函数库的生成及使用。(2)endian.c为一个简单的C函数用于识别机器的内存大小端。(3)endian.h为相应的头文件,...
在这篇文档中,将以C/C++的源码作为我们基础,所以必然涉及一些关于C/C++的编译的知识,相关于这方面的内容,还请各 位查看相关的编译器的文档。这里所默认的编译器是UNIX 下的GCC 和CC。 关于程序的编译和链接
2.本程序是利用bat脚本直接运行Makefile,非常方便;直接点击运行“run.bat”即可编译,方便快捷。 3.makefile为采用通用性规则编写,自动搜索所在目录中的代码,自动编译; 4.适应于编译C++/C代码。
本工程为示例Makefile引入当前第三方库的使用,该处第三方库为spdlog,工程已在ubuntu18.04下编译通过,希望能对你有所帮助!
在Linux下编译并运行C/C++程序的流程,包括环境设定,编译命令,makefile编写等
本文提供了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile。 在使用 Makefile 之前,只需对它进行一些简单的设置即可;而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 ...
我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件。如果我们用gcc去一个一个编译每一个源文件的话,效率会低很多,但是如果我们可以写一个Makefile,那么只...
首次运用ubuntu编写程序:编写一个主程序文件main1.c和一个子程序文件sub1.c,有如下要求:子程序sub1.c包含一个算术运算函数float x2x(int a,int b),此函数功能为对两...(3)在ubuntu系统下用makefile方式编译主程序。
2. 顶层Makefile中的CFLAGS在编译任意一个.c文件时都会使用 3. CFLAGS EXTRA_CFLAGS CFLAGS_xxx.o 三者组成xxx.c的编译选项 二、顶层目录的Makefile: 它除了定义obj-y来指定根目录下要编进程序去的文件、子...
Makefile文件arm-none-linux-gnueabi-gcc编译文件,linux下多个.C文件统一使用make文件进行编译
MTK的编译过程主要是在windows命令行下通过Makefile文件执行相应的prel脚本或c程序,将资源包生成c源程序,并与相应模块的c程序.o,.lib或.obj的中间代码,最终生成在手机上使用的.bin文件和在模拟器上使用的...