GNU make 的用法【转】

在Windows下安装GNU Make并使用Makefile文件 首先,你需要从GNU Make的官方网站(https://www.gnu.org/software/make/)下载适用于Windows的GNU Make二进制文件。下载完成后,将二进制文件保存到一个你喜欢的位置,比如。通过按照上述步骤,在Windows下安装GNU Make并使用Makefile文件,你可以轻松自动化编译和构建任务,提高开发效率并确保代码的一致性和可重复性。在本文中,我将向你介绍如何在Windows操作系统下安装GNU Make,并使用Makefile文件来执行一些基本的构建任务。 阅读详情

在大型的开发项目中,通常有几十到上百个的源文件,如果每次均手工键入 gcc 命令进行编译的话,则会非常不方便。因此,人们通常利用 make 工具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。实际上,make 工具通过一个称为 makefile 的文件来完成并自动维护编译工作。makefile 需要按照某种语法进行编写,其中说明了如何编译各个源文件并连接生成可执行文件,并定义了源文件之间的依赖关系。当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该文件的源文件。makefile 文件是许多编译器,包括 Windows NT 下的编译器维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。

默认情况下,GNU make 工具在当前工作目录中按如下顺序搜索 makefile:

* GNUmakefile

* makefile

* Makefile

在 UNIX 系统中,习惯使用 Makefile 作为 makfile 文件。如果要使用其他文件作为 makefile,则可利用类似下面的 make 命令选项指定 makefile 文件:$ make -f Makefile.debug


makefile 基本结构

makefile 中一般包含如下内容:

* 需要由 make 工具创建的项目,通常是目标文件和可执行文件。通常使用"目标(target)"一词来表示要创建的项目。

* 要创建的项目依赖于哪些文件。

* 创建每个项目时需要运行的命令。

例如,假设你现在有一个 C++ 源文件 test.C,该源文件包含有自定义的头文件 test.h,则目标文件 test.o 明确依赖于两个源文件:test.C 和 test.h。另外,你可能只希望利用 g++ 命令来生成 test.o 目标文件。这时,就可以利用如下的 makefile 来定义 test.o 的创建规则:

# This makefile just is a example.
# The following lines indicate how test.o depends
# test.C and test.h, and how to create test.o

test.o: test.C test.h
    g++ -c -g test.C

从上面的例子注意到,第一个字符为 # 的行为注释行。第一个非注释行指定 test.o 为目标,并且依赖于test.C 和 test.h 文件。随后的行指定了如何从目标所依赖的文件建立目标。当 test.C 或 test.h 文件在编译之后又被修改,则 make 工具可自动重新编译 test.o,如果在前后两次编译之间,test.C 和 test.h 均没有被修改,而且 test.o 还存在的话,就没有必要重新编译。这种依赖关系在多源文件的程序编译中尤其重要。通过这种依赖关系的定义,make 工具可避免许多不必要的编译工作。当然,利用 Shell 脚本也可以达到自动编译的效果,但是,Shell 脚本将全部编译任何源文件,包括哪些不必要重新编译的源文件,而 make 工具则可根据目标上一次编译的时间和目标所依赖的源文件的更新时间而自动判断应当编译哪个源文件。

makefile 变量

GNU 的 make 工具除提供有建立目标的基本功能之外,还有许多便于表达依赖性关系以及建立目标的命令的特色。其中之一就是变量或宏的定义能力。如果你要以相同的编译选项同时编译十几个 C 源文件,而为每个目标的编译指定冗长的编译选项的话,将是非常乏味的。但利用简单的变量定义,可避免这种乏味的工作:

# Define macros for name of compiler
CC = gcc

# Define a macr o for the CC flags
CCFLAGS = -D_DEBUG -g -m486

# A rule for building a object file
test.o: test.c test.h
    $(CC) -c $(CCFLAGS) test.c

在上面的例子中,CC 和 CCFLAGS 就是 make 的变量。GNU make 通常称之为变量,而其他 UNIX 的 make 工具称之为宏,实际是同一个东西。在 makefile 中引用变量的值时,只需变量名之前添加 $ 符号,如上面的 $(CC) 和 $(CCFLAGS)。

GNU make 的主要预定义变量

一个 makefile 文件中可定义多个目标,利用 make target 命令可指定要编译的目标,如果不指定目标,则使用第一个目标。通常,makefile 中定义有 clean 目标,可用来清除编译过程中的中间文件,例如:clean:rm -f *.o,运行 make clean 时,将执行 rm -f *.o 命令,最终删除所有编译过程中产生的所有中间文件。

GNU make 有许多预定义的变量,这些变量具有特殊的含义,可在规则中使用。表 1 给出了一些主要的预定义变量,除这些变量外,GNU make 还将所有的环境变量作为自己的预定义变量。

 表 1  GNU make 的主要预定义变量

预定义变量                      含义

$*              不包含扩展名的目标文件名称。
$+              所有的依赖文件,以空格分开,并以出现的先后为序,可能包含重复的依赖文件。
$<              第一个依赖文件的名称。
$?              所有的依赖文件,以空格分开,这些依赖文件的修改日期比目标的创建日期晚。
$@              目标的完整名称。
$^              所有的依赖文件,以空格分开,不包含重复的依赖文件。
$%              如果目标是归档成员,则该变量表示目标的归档成员名称。例如,如果目标名称为 mytarget.so(image.o),则$@为 mytarget.so,而$%为 image.o。
AR              归档维护程序的名称,默认值为 ar。
ARFLAGS         归档维护程序的选项。
AS              汇编程序的名称,默认值为 as。
ASFLAGS         汇编程序的选项。
CC              C 编译器的名称,默认值为 cc。
CCFLAGS         C 编译器的选项。
CPP             C 预编译器的名称,默认值为 $(CC) -E。
CPPFLAGS        C 预编译的选项。
CXX             C++ 编译器的名称,默认值为 g++。
CXXFLAGS        C++ 编译器的选项。
FC              FORTRAN 编译器的名称,默认值为 f77。
FFLAGS          FORTRAN 编译器的选项。

隐含规则

GNU make 包含有一些内置的或隐含的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。GNU make 支持两种类型的隐含规则:

* 后缀规则(Suffix Rule)。后缀规则是定义隐含规则的老风格方法。后缀规则定义了将一个具有某个后缀的文件(例如,.c 文件)转换为具有另外一种后缀的文件(例如,.o 文件)的方法。每个后缀规则以两个成对出现的后缀名定义,例如,将 .c 文件转换为 .o 文件的后缀规则可定义为:

.c.o:
$(CC) $(CCFLAGS) $(CPPFLAGS) -c -o $@ $<

* 模式规则(pattern rules)。这种规则更加通用,因为可以利用模式规则定义更加复杂的依赖性规则。模式规则看起来非常类似于正则规则,但在目标名称的前面多了一个 % 号,同时可用来定义目标和依赖文件之间的关系,例如下面的模式规则定义了如何将任意一个 X.c 文件转换为 X.o 文件:

%.c:%.o
$(CC) $(CCFLAGS) $(CPPFLAGS) -c -o $@ $<

运行 make我们知道,直接在 make 命令的后面键入目标名可建立指定的目标,如果直接运行 make,则建立第一个目标。我们还知道可以用 make -f mymakefile 这样的命令指定 make 使用特定的 makefile,而不是默认的 GNUmakefile、makefile 或 Makefile。但 GNU make 命令还有一些其他选项,表 2 给出了这些选项。

表 2  GNU make 命令的常用命令行选项

命令行选项              含义
-C DIR              在读取 makefile 之前改变到指定的目录 DIR。
-f FILE             以指定的 FILE 文件作为 makefile。
-h                  显示所有的 make 选项。
-i                  忽略所有的命令执行错误。
-I DIR              当包含其他 makefile 文件时,可利用该选项指定搜索目录。
-n                  只打印要执行的命令,但不执行这些命令。
-p                  显示 make 变量数据库和隐含规则。
-s                  在执行命令时不显示命令。
-w                  在处理 makefile 之前和之后,显示工作目录。
-W FILE             假定文件 FILE 已经被修改。

makefile 范例

GNU Make中文手册:自动化构建的精粹 GNU Make 是一个用于自动编译和构建程序的工具,广泛应用于软件开发领域。Make 通过读取名为 Makefile 的文件来执行编译任务,Makefile 中定义了一系列的规则,这些规则指导 make 如何根据文件的时间戳来构建目标文件,从而只重新编译更新过的文件,这对于提高开发效率和自动化构建流程至关重要。 阅读详情

相关推荐

《GNU make中文手册》

GUN make 中文手册 译者:徐海兵 2004-09-11 3.5.6 库文件和搜索目录 .................................................................................................... 36 3.6 Makefile伪目标.............................................................................................................. 37 3.7 强制目标(没有命令或依赖的规则) ............................................................................. 40 3.8 空目标文件..................................................................................................................... 41 3.9 Makefile的特殊目标....................................................................................................... 41 3.10 多目标............................................................................................................................ 44 3.11 多规则目标..................................................................................................................... 44 3.12 静态模式 ........................................................................................................................ 45 3.12.1 静态模式规则的语法 ....................................................................................... 45 3.12.2 静态模式和隐含规则 ....................................................................................... 47 3.13 双冒号规则..................................................................................................................... 48 3.14 自动产生依赖 ................................................................................................................. 49 第四章:规则的命令 .................................................................................................................. 51 4 规则中书写命令 ................................................................................................................... 51 4.1 命令回显 ........................................................................................................................ 51 4.2 命令的执行..................................................................................................................... 52 4.3 并发执行命令 ................................................................................................................. 53 4.4 命令执行的错误.............................................................................................................. 54 4.5 中断make的执行............................................................................................................ 56 4.6 make的递归执行............................................................................................................ 56 4.6.1 变量MAKE ............................................................................................................... 57 4.6.2 变量和递归 ............................................................................................................... 58 4.6.3 命令行选项和递归 .................................................................................................... 61 4.6.4 -w选项...................................................................................................................... 63 4.7 定义命令包..................................................................................................................... 63 4.8 空命令............................................................................................................................ 65 第五章:Makefile中的变量......................................................................................................... 65 5 使用变量 .............................................................................................................................. 65 5.1 变量的引用..................................................................................................................... 66 5.2 两种变量定义(赋值)................................................................................................... 68 5.2.1 递归展开式变量........................................................................................................ 68 5.2.2 直接展开式变量........................................................................................................ 69 5.2.3 如何定义一个空格 .................................................................................................... 70 5.2.4 “?=”操作符 ............................................................................................................. 71 5.3 变量的高级用法.............................................................................................................. 71 5.3.1 变量的替换引用........................................................................................................ 72 5.3.2 变量的套嵌引用........................................................................................................ 72 5.4 变量取值 ........................................................................................................................ 76 5.5 如何设置变量 ................................................................................................................. 76 5.6 追加变量值..................................................................................................................... 77 5.7 override 指示符 ............................................................................................................. 79 5.8 多行定义 ........................................................................................................................ 80 5.9 系统环境变量 ................................................................................................................. 81 5.10 目标指定变量 ................................................................................................................. 83 5.11 模式指定变量 ................................................................................................................. 84 第六章:Makefile的条件执行 ..................................................................................................... 85 6 Makefile的条件判断 ............................................................................................................. 85 6.1 一个例子 ........................................................................................................................ 85 6.2 条件判断的基本语法 ...................................................................................................... 86 2004年9月11日 3GUN make 中文手册 6.3 标记测试的条件语句 ...................................................................................................... 89 第七章:make的内嵌函数.......................................................................................................... 89 7 make的函数 ......................................................................................................................... 89 7.1 函数的调用语法.............................................................................................................. 90 7.2 文本处理函数 ................................................................................................................. 91 7.2.1 $(subst FROM,TO,TEXT) ....................................................................................... 91 7.2.2 $(patsubst PATTERN,REPLACEMENT,TEXT) ..................................................... 91 7.2.3 $(strip STRINT)....................................................................................................... 92 7.2.4 $(findstring FIND,IN) .............................................................................................. 92 7.2.5 $(filter PATTERN...,TEXT) ..................................................................................... 93 7.2.6 $(filter-out PATTERN...,TEXT) ............................................................................... 93 7.2.7 $(sort LIST) ............................................................................................................. 94 7.2.8 $(word N,TEXT) ...................................................................................................... 94 7.2.9 $(wordlist S,E,TEXT).............................................................................................. 94 7.2.10 $(words TEXT) .............................................................................................. 94 7.2.11 $(firstword NAMES...) .................................................................................. 95 7.3 文件名处理函数.............................................................................................................. 95 7.3.1 $(dir NAMES...) ...................................................................................................... 95 7.3.2 $(notdir NAMES...)................................................................................................. 96 7.3.3 $(suffix NAMES...) ................................................................................................. 96 7.3.4 $(basename NAMES...) ......................................................................................... 96 7.3.5 $(addsuffix SUFFIX,NAMES...) ............................................................................. 97 7.3.6 $(addprefix PREFIX,NAMES...) ............................................................................. 97 7.3.7 $(join LIST1,LIST2)................................................................................................. 98 7.3.8 $(wildcard PATTERN) ............................................................................................ 98 7.4 foreach 函数................................................................................................................. 98 7.5 if 函数 ......................................................................................................................... 100 7.6 call函数 ....................................................................................................................... 100 7.7 value函数 .................................................................................................................... 102 7.8 eval函数 ...................................................................................................................... 103 7.9 origin函数 ................................................................................................................... 104 7.10 shell函数 ..................................................................................................................... 106 7.11 make的控制函数.......................................................................................................... 106 7.11.1 $(error TEXT...) ........................................................................................... 107 7.11.2 $(warning TEXT...)...................................................................................... 107 第八章:执行make .................................................................................................................. 108 8 执行make .......................................................................................................................... 108 8.1 指定makefile文件 ........................................................................................................ 108 8.2 指定终极目标 ............................................................................................................... 109 8.3 替代命令的执行............................................................................................................ 111 8.4 防止特定文件重建 ........................................................................................................ 112 8.5 替换变量定义 ............................................................................................................... 113 8.6 使用make进行编译测试............................................................................................... 114 8.7 make的命令行选项 ...................................................................................................... 115 第九章:make的隐含规则........................................................................................................ 119 9 使用隐含规则 ..................................................................................................................... 119 9.1 隐含规则的使用............................................................................................................ 119 9.2 make的隐含规则一览 .................................................................................................. 121 9.3 隐含变量 ...................................................................................................................... 124 9.3.1 代表命令的变量...................................................................................................... 124 9.3.2 命令参数的变量...................................................................................................... 125 9.4 make隐含规则链.......................................................................................................... 126 2004年9月11日 4GUN make 中文手册 9.5 模式规则 ...................................................................................................................... 128 9.5.1 模式规则介绍 ......................................................................................................... 128 9.5.2 模式规则示例 ......................................................................................................... 129 9.5.3 自动化变量 ............................................................................................................. 130 9.5.4 模式的匹配 ............................................................................................................. 133 9.5.5 万用规则 ................................................................................................................ 133 9.5.6 重建内嵌隐含规则 .................................................................................................. 134 9.6 缺省规则 ...................................................................................................................... 135 9.7 后缀规则 ...................................................................................................................... 135 9.8 隐含规则搜索算法 ........................................................................................................ 137 第十章:使用make更新静态库文件 ......................................................................................... 138 10 更新静态库文件............................................................................................................ 138 10.1 库成员作为目标............................................................................................................ 138 ARCHIVE(MEMBER) .............................................................................................................. 138 10.2 静态库的更新 ............................................................................................................... 139 10.2.1 更新静态库的符号索引表 .............................................................................. 140 10.3 make静态库的注意事项............................................................................................... 141 10.4 静态库的后缀规则 ........................................................................................................ 141 第十一章 : GNU make的特点............................................................................................... 142 11 GNU make的一些特点 ................................................................................................. 142 11.1 源自System v的特点 ................................................................................................... 142 11.2 源自其他版本的特点 .................................................................................................... 143 11.3 GNU make自身的特点 ................................................................................................. 143 第十二章 和其它版本的兼容 .................................................................................................... 144 12 不兼容性 ...................................................................................................................... 144 第十三章 Makefile的约定 ........................................................................................................ 146 13 书写约定 ...................................................................................................................... 146 13.1 基本的约定................................................................................................................... 146 13.2 规则命令行的约定 ........................................................................................................ 147 13.3 代表命令变量 ............................................................................................................... 149 13.4 安装目录变量 ............................................................................................................... 150 13.5 Makefile的标准目标名 ................................................................................................. 154 13.6 安装命令分类 ............................................................................................................... 159 第十四章 make的常见错误信息............................................................................................... 161 14 make产生的错误信息 .......................................................................................................... 161 附录1:关键字索引................................................................................................................. 163 GNU make可识别的指示符:.............................................................................................. 163 GNU make函数: ............................................................................................................... 164 GNU make的自动化变量..................................................................................................... 165 GNU make环境变量 ............................................................................................................ 166 后序 ......................................................................................................................................... 166

【翻译】GNU make 手册

gun make 手册 翻译

ZSZ_shsf的博客 684

STM32F103VET6实战:用W25Q64外部Flash实现Bootloader远程升级(含完整代码解析)

本文详细介绍了基于STM32F103VET6与W25Q64外部Flash的Bootloader远程升级实现方案,包含硬件选型、存储分区策略、双校验机制及完整代码解析。通过SPI接口实现固件存储与升级,适用于物联网设备开发,提升OTA功能可靠性。

weixin_42620340的博客 357

GNU make 指南

GNU make 指南 蓝森林 http://www.lslnet.com 2000年8月10日 10:56作 者: 哈少译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程

qiup的书斋 1075

用STC8单片机解码EV1527遥控信号:从波形分析到C代码实现(附完整库)

本文详细介绍了如何使用STC8单片机解码EV1527遥控信号,从波形分析到C代码实现的完整过程。内容包括EV1527协议解析、硬件搭建、信号捕获技巧、解码算法实现及优化策略,并附有完整库代码,帮助开发者快速实现智能家居设备的无线控制。

weixin_34093995的博客 295

Shader Graph实战:5分钟搞定Flow Map水体流动效果(含UV偏移避坑指南)

本文详细解析了如何使用Unity的Shader Graph工具快速实现Flow Map水体流动效果,涵盖基础原理、核心节点搭建、高级技巧及性能优化。特别针对UV偏移问题提供避坑指南,帮助开发者轻松打造专业级动态水面效果,适合游戏场景增强视觉表现。

weixin_29250403的博客 244

GNU make中文手册-第三章:Makefile 总述

GNU make中文手册-第三章:Makefile 总述关键词: GNU make中文手册-第三章:Ma 总述 第三章:Makefile 总述3.1 Makefile的内容在一个完整的Makefile中,包含了5个

593

华北理工大学以升实验班蓝桥杯选拔赛题解

文章目录华北理工大学以升实验班蓝桥杯选拔赛题解A:期末考试题目描述题目讲解代码B:月份题目描述题目讲解代码C:打饭题目描述题目讲解代码D : 正弦波信号题目描述题目讲解代码E : 亲爱的长方形题目描述题目讲解代码F:挖金子题目描述题目讲解代码G : 金金的游戏题目描述题目讲解代码H : 区间和题目描述题目讲解代码详细视频讲解请关注华北理工大学b站账号。 华北理工大学以升实验班蓝桥杯选拔赛题解 A:期末考试 题目描述 Description 期末考试过去许多天了,如今成绩都出来了,那么现在让我们对成绩我分个类

Qq1739206233的博客 1127

GNU Make构建工具使用教程

1.基本概念 将源代码变成可执行文件叫做编译(compile);先编译这个,还是先编译那个(即编译的安排)叫做构建(build)。 Make是一种常用的构建工具,主要用于C语言项目。但是Make并不限于某种编程语言,也不限于编译代码的场景。任何“只要某个文件发生变化,就需要重新构建”的场景都可以用Make构建。 Linux系统自带了make命令;Windows系统需要安装MinGW,使用安装目录下的bin\mingw32-make.exe。make命令从当前目录下名为Makefile的文件中读取构建规则。

zzy979481894的博客 1万+

SAP 针对不同行业(制造业、零售业、金融业)推出了专属的云解决方案,以下是各行业的核心方案与特点

SAP推出行业专属云解决方案:制造业(SAP Digital Manufacturing Cloud)提供AI排产与质量预警,降低缺陷率;零售业(S/4HANA Cloud零售版)实现AI预测补货与全渠道库存同步,减少浪费;金融业(Business ByDesign)支持合规自动化与实时风控,降低审计成本。各方案均采用云原生架构,典型案例显示实施效果显著。

金牌架构师 491

从服务器到桌面超算:当3999美元的NVIDIA DGX Spark装上Ubuntu,普通开发者能玩出什么花?

DGX Spark的出现,标志着AI算力正在经历从"数据中心集中供给"到"个人桌面按需拥有"的范式转移。它让开发者可以在本地完成从数据预处理、模型微调到推理验证的全流程,只有在需要大规模训练时才调用云端资源。迭代速度:从按小时计费的云端调试,变成随时随地的本地实验数据主权:敏感信息永不离开本地成本可控:一次投入,长期使用,不受API调用次数限制AI算力民主化的时代,真的来了。你的下一台超级计算机,不必在云端。它就在你的桌面上,安静地等待着你的下一个创意。附录:实用资源。

QQ_778132974的博客 616

GNU Make 使用手册(中译版)

GNU Make 使用手册(中译版)

m0_49236123的博客 1669

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1382

【免费下载】 Windows 安装 GNU Make 指南

Windows 安装 GNU Make 指南 【下载地址】Windows安装GNUMake指南 Windows 安装 GNU Make 指南本仓库提供了一个详细的资源文件,帮助你在 Windows 系统上安装 GNU Make(也称为 `make`) ...

gitblog_09771的博客 1575

深度测评:Accio Work——目前普通用户最友好的多 Agent 协同工具

摘要:Accio Work是阿里国际站推出的多Agent协同工具,通过借鉴古代"三省六部制"构建高效协作框架。该工具支持主流大模型,可配置专业Agent角色,实现40分钟内完成复杂产品PRD等高效协作。其亮点在于直观的UI设计和流程驱动机制,能强制各Agent从专业视角深度思考。虽然超长对话稳定性有待优化,但作为目前最用户友好的多Agent工具,显著降低了构建复杂AI团队的门槛,成为提升个人和小微企业生产力的利器。

Maynor的博客 1731

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

《GNU make中文手册》资源下载介绍

《GNU make中文手册》资源下载介绍 【下载地址】GNUmake中文手册资源下载介绍 《GNU make中文手册》是徐海兵先生翻译的GNU make官方文档,全面系统地介绍了make工具的使用方法、Makefile编写规则及相关变量和函数。本手册涵盖了从Makefile基本组成到隐含规则、条件执行、内嵌函数等高级用法...

gitblog_06774的博客 753

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

make命令OPTIONS总览表 GNU make

make命令OPTIONS总览表 GNU make make版本: GNU Make 4.3 注意:按字典顺序 -b, -m 忽略和其它版本make的兼容性,也就是说当前版本的make不兼容之前版本的make -B, --always-make 认为所有的目标都需要更新(重编译),无条件执行规则 -C dir, --directory=dir 读取makefile前,先切换到指定目录dir,如果多次使用-C参数,每个-C选项的路径都相对于前一个选项 如make -C /HOME -C src

qq_39366020的博客 1184

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

GNU make翻注

该make实用程序会自动确定大型程序的哪些部分需要重新编译,并发出命令对其进行重新编译. 本手册介绍了由Richard Stallman和Roland McGrath实现的GNU make。处理了自3.76版以来的开发。GNU make符合IEEE标准1003.2-1992(POSIX.2)的6.2节。我们的示例显示了C程序,因为它们是最常见的,但是您可以将make用于任何可以使用shell命令运行编译器的编程语言。实际上,make并不局限于程序。

qq_41720266的博客 1023

GNU make 指南(转自www.lisoleg.net)

GNU make 指南 翻译: 哈少 译者按: 本文是一篇介绍 GNU Make 的文章,读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix (当然也包括 Linux )系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ,则说明你写的程序只是个人的练习程序,不具有任何实用的价值。也许这么说有点 儿偏激,但 make 实在是应该用在任何稍具规模的程序中的

zaowei21的专栏 3830

【亲测免费】 深入探索GNU Make:《GNU-Makefile中文手册-Ver3.8》推荐

深入探索GNU Make:《GNU-Makefile中文手册-Ver3.8》推荐 【下载地址】GNU-Makefile中文手册-Ver3.8 本资源文件为《GNU-Makefile中文手册-Ver3.8.pdf》,是对“info make”的翻译整理。本书不是一个纯粹的语言翻译版本,其中对GNU make的一些语法和用法...

gitblog_06618的博客 1061

在CentOS/Debian/Ubuntu上编译安装最新版gnu make 和GNU 'binutils' (as and ld)

先查看make版本: root@:~/clickhouse/gcc-build# make --version GNU Make 3.82 Built for x86_64-redhat-linux-gnu Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later &l...

个人博客 5442

GNU make在鸿蒙PC上的使用方法

本文档介绍了为OpenHarmony平台适配的GNU make工具ohos-make的安装与使用方法。由于鸿蒙PC的安全限制,必须将工具打包为HNP(HarmonyOS Native Package)格式才能使用。文档详细说明了从下载预编译包到创建HNP配置文件的完整打包流程,包括目录结构准备、配置文件编写和打包脚本示例。此外,还对比了鸿蒙PC与其他平台(开发板、容器)在使用方式上的差异,并强调了HNP包在系统集成和安全方面的优势。

qq_34025996的博客 1083

GNU Make | C/C++项目自动构建入门

在Linux编译C/C++项目时,还是只会傻傻使用gcc、g++命令手动进行编译吗?GNU make你值得拥有,快速完成编译任务,只用输入“make”。

Qiang_san的博客 1108

Ubuntu GNU make 降级到3.81安装步骤及make时报错解决方案

1.下载GNU GNU make 下载并解压 2.运行./configure ./configure 这时可能会报错,比如找不到gcc等等。缺什么安什么,apt install 走起。 必须注意,安装所需依赖时,有可能报错,多换几个apt源试一试,不要迷信阿里云! 换源之后别忘了apt update. 3.make 在命令行中 make 注意这里一般会报错。解决方案是,打开glob/glob.c,注释掉210行和231行。(以下为注释之后的结果) //#if !defined __alloca &amp

RadiumTang的博客 3186

【免费下载】 探索GNU Make的奥秘:于凤昌翻译的《GNU Make 使用手册(中译版)》

探索GNU Make的奥秘:于凤昌翻译的《GNU Make 使用手册(中译版)》 【下载地址】GNUMake使用手册中译版-于凤昌翻译分享 本仓库提供了一份由**于凤昌**翻译的《GNU Make 使用手册(中译版)》资源文件。该手册是GNU Make工具的官方文档的中文翻译版本,旨在帮助中文用户更好地理解和使用GNU ...

gitblog_06682的博客 751
上一篇: 构建Python的桌面开发环境 于2005年07月26日
下一篇: gcc简介【转】
firerain
博客等级 码龄25年 4粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值