今天我想研究一下makefile. 关于这是个什么东东,我就不详细说了,不懂Google一下什么都有了。
--------------------------------------------------------------------
话不多说,我们先通过例子来学习一下。
USER=beyondclouds
all:a1 a2 a3 a4
@echo this is all!
a1:a4
@echo this is a1!
a2:
@echo $(PWD) +'/echo'
a3:
@pwd
a4:
@echo $(USER)
运行make后,结果如下:
beyondclouds
this is a1!
/home/beyondclouds/Desktop +/echo
/home/beyondclouds/Desktop
this is all!
通过这个实验,我们能了解makefile中的一些什么东西呢?
1. all 表示运行的目标。这个是makefile的内置预设变量。makefile第一次读的.
2. target ... : prerequisites ...
command
...
...
这里表示要运行“目标”,必须先运行“依赖”, 但是不重复运行依赖.
3. 符号问题:
@是用于访问shell命令
$ 是用于访问变量。 $(USER),$(PWD) 一个是自定义的,一个是系统的命令PWD.
4. 反斜杠(\)是换行符的意思
5. 可以指定make 目标 执行command
比如:
输入make相当于 make all
也可以输入 make XXX 就执行目标XXX
--------------------------------------------------------------------------
通过上面的实验,我们可以写一个简单的makefile编译cpp程序.
CC=g++
all:
$(CC) -o hello Hello.cpp
我们在这个例子中可以添加 LIB INCDIRS CFLAGS 等用户自定义变量而给makefile更完善的功能.
-------------------------------------------------------------------------------
下面我们写一个模板
GXX=
LIB=
INCDIRS=
CFLAGS=
objects = main.o kbd.o \
command.o display.o
edit : $(objects)
GXX -o edit $(objects)
main.o : defs.h
.PHONY : clean
clean :
rm edit $(objects)
------------------------------------------------------------------------------
PS:以上只是我对makefile的一些基本理解,和实现一些基本的功能,当然makefile不止这么简单.
详细的介绍链接
http://www.stlchina.org/twiki/bin/view.pl/ScriptProgram/LearnMakefile
分享到:
相关推荐
Linux Makefile 实验文档深入探讨了Makefile在Linux和Unix系统中的应用,以及如何使用GNU make工具来自动化编译和构建项目。Makefile是一个自动化编译的工具,能够根据文件的时间戳来决定哪些文件需要编译,从而提高...
### Linux Makefile 教程详解 #### 一、引言 在现代软件开发过程中,Makefile 起着至关重要的作用,特别是在 Linux 和其他 Unix-like 操作系统中。本文将深入探讨 Makefile 的基本概念、编写技巧以及如何利用 ...
接着,通过Git克隆V语言的源码仓库到本地,之后就可以使用Makefile中的指令编译并安装V语言了。安装完成后,通过命令行工具`v`即可开始与V语言的初次互动,无论是交互式测试还是编译和运行源码文件都变得触手可及。 ...
- Ubuntu系统初体验:用户可以体验Ubuntu的操作系统界面,并了解其基本功能,如系统设置、注销与关机操作。 - Ubuntu终端操作:终端是用户输入命令行指令的界面,是Linux系统管理的核心工具之一。 - Shell操作:...
2.1.1 Virtual PC初体验8 2.1.2 创建你的第一个Virtual PC9 2.1.3 虚拟软盘研究12 2.1.4 虚拟软盘实战14 2.2 编译器(NASM & GCC)18 2.3 安装虚拟Linux19 2.4 在虚拟Linux上访问Windows文件夹26 2.5 安装虚拟PCDOS...
在Ubuntu系统入门方面,文档对Ubuntu系统的初体验、终端操作、Shell操作进行了介绍。其中,Shell命令是Linux系统中进行任务控制和系统管理的核心,这些基本操作是进行Linux开发的必备技能。此外,APT下载工具、文本...
**CP/M(Control Program for Microcomputers)** 是一种早期的操作系统,广泛应用于1970年代末至1980年代初的微电脑上。它以简单、高效著称,是个人计算机操作系统的一个里程碑。ZIP(Z-System)是CP/M的一种实现,...
文档在第二部分深入讲解了Ubuntu系统,包括系统初体验、终端操作、Shell命令、APT下载工具、文本编辑以及文件系统操作。这些内容帮助读者了解Linux的目录结构、文件管理、用户权限管理及磁盘管理等基础知识。 ### ...
2.1.1 Virtual PC初体验8 2.1.2 创建你的第一个Virtual PC9 2.1.3 虚拟软盘研究12 2.1.4 虚拟软盘实战14 2.2 编译器(NASM & GCC)18 2.3 安装虚拟Linux19 2.4 在虚拟Linux上访问Windows文件夹26 2.5 安装虚拟PCDOS...
2.1.1 Virtual PC初体验8 2.1.2 创建你的第一个Virtual PC9 2.1.3 虚拟软盘研究12 2.1.4 虚拟软盘实战14 2.2 编译器(NASM & GCC)18 2.3 安装虚拟Linux19 2.4 在虚拟Linux上访问Windows文件夹26 2.5 安装虚拟...
在Android开发中,“Makefile”是关键的构建工具,用于编译和打包Android系统组件。这里的标签“Makefile”提示我们这个压缩包可能包含了用于构建和管理摩托罗拉设备Vendor层的构建脚本。Makefile是GNU Make的语法,...
通过qt-embedded-2.3.10平台的编译,开发者可以构建出符合特定需求的嵌入式操作系统,实现丰富的用户交互体验。同时,开源的特性鼓励了社区的创新和合作,推动了嵌入式领域的快速发展。无论你是初涉嵌入式领域的...
通过理解和修改这些文件,开发者可以为OnePlus Kebab设备优化Android系统,确保其性能、兼容性和用户体验达到最佳状态。同时,这样的定制可能包括解锁Bootloader、安装自定义内核、调整系统性能和电池寿命,以及添加...
2. **XBMC (Xbox Media Center) / Kodi**: XBMC是一个开源的、跨平台的媒体中心软件,最初为初代Xbox游戏机设计,现在支持Windows、Mac OS X、Linux等多种操作系统。Kodi允许用户组织和播放音频、视频文件,以及流...
本压缩包“linux-0.12.zip”提供了一个特别的机会,让我们能够在Windows环境下调试并运行古老的Linux 0.12版本,这对于初学者而言是一次难得的实践体验。通过这个项目,我们可以深入理解Linux内核的工作机制,进一步...
Util-linux项目始于1990年代初,是Linux内核的一部分,随着时间的推移,它逐渐独立成为一个单独的软件包,包含了数十个命令行工具,如mount、umount、fdisk、mkfs、chroot等,这些工具对于系统管理员和开发人员来说...
- **Bochs初体验**:介绍Bochs的基本特性和优势。 - **Bochs的安装**:提供安装指南。 - **Bochs的使用**:演示如何使用Bochs模拟硬件环境。 - **用Bochs调试操作系统**:介绍如何利用Bochs进行调试。 - **QEMU*...
在IT领域,Atari ST是一款经典的8位个人电脑系统,它在80年代末到90年代初流行一时。这个名为"atari-devpac2-helloworld"的项目显然是针对Atari ST平台的一个开发示例,它包含了一个"Hello, World!"程序的源代码。这...