Makefile(三)】的更多相关文章

$@:目标文件 $^:所有的依赖文件 $<:第一个依赖文件 使用上面三个变量就可以简化我们的Makefile文件: #简化后的Makefile main : main.o log.o test_log.o gcc –o $@ $^ main.o : main.c log.h test_log.h gcc –c $< log.o : log.c log.h gcc –c $< test_log.o : test_log.c test_log.h gcc –c $< .PHONY :…
上一篇一步一步写一个简单通用的makefile(二) 里面的makefile 实现对通用的代码进行编译,这一章我将会对上一次的makefile 进行进一步的优化. 优化后的makefile: #Hellomake #Magnum, 2014-10-20 # 指令编译器和选项 CC=gcc CFLAGS=-Wall # 需要链接库的库名,比如libm.a,就是-lm,需要去掉前面的lib和后面的.a LIBS=-lm # 设置默认搜索头文件的路径,优先是这个,然后是系统路径 IncludeDir…
书写规则———— 规则包含两个部分,一个是依赖关系,一个是生成目标的方法. 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么.一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标.如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标.make所完成的也就是这个目标. 好了,还是让我们来看一看如何书写规则. 一.规则举例…
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相关联的文件对象.返回的确切类型取决于给makefile()提供的参数. 这些参数的解释方式与内置open()函数的解释方式相同,除了makefile方法唯一支持的mode值是'r'(默认)'w'和'b'. 套接字必须处于阻塞模式; 它可能有超时,但是如果超时发生,文件对象的内部缓冲区可能会以不一致的…
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相关联的文件对象.返回的确切类型取决于给makefile()提供的参数. 这些参数的解释方式与内置open()函数的解释方式相同,除了makefile方法唯一支持的mode值是'r'(默认)'w'和'b'. 套接字必须处于阻塞模式; 它可能有超时,但是如果超时发生,文件对象的内部缓冲区可能会以不一致的…
目录(?)[-] Makefile 介绍 1 Makefile的规则 2 一个示例 3 make是如何工作的 4 makefile中使用变量 5 让make自动推导 6 另类风格的makefile 7 清空目标文件的规则 Makefile 总述 1 Makefile里有什么 2Makefile的文件名 3 引用其它的Makefile 4 环境变量 MAKEFILES 5 make的工作方式 Makefile书写规则 1 规则举例 2 规则的语法 3 在规则中使用通配符 4 文件搜寻 5 伪目标…
Hello World 模块以及对应的内核makefile详解 hello.c: #include <linux/module.h> //所有模块都需要的头文件 #include <linux/init.h> // init&exit相关宏 MODULE_LICENSE("GPL"); MODULE_AUTHOR("feifei"); MODULE_DESCRIPTION("hello world module")…
一步一步写一个简单通用的makefile(一) 一步一步写一个简单通用的makefile(二) 一步一步写一个简单通用的makefile(三) 一步一步写一个简单通用的makefile(四)…
建立静态库 建立四个文件 bin(可运行文件),lib(库),include(头文件),src(放源文件) 这里的起的库明为add 在src文件里运行 1)gcc -c add.c //编译add.c源文件生成add.o目标文件 2)ar crsv ../lib/ libadd.a add.o //对目标文件*.o进行归档,生成lib*.a, 把这个生成文件放在lib里 3)gcc -o main main.c -L(大些的爱偶,放库的路径)../lib   –l(小写的爱偶,库名为add) a…
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM VI来说,一开始就需要…
实验二 Linux下C语言编程基础 一.实验目的 1. 熟悉Linux系统下的开发环境 2. 熟悉vi的基本操作 3. 熟悉gcc编译器的基本原理 4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术 6. 熟悉makefile基本原理及语法规范 7. 掌握静态库和动态库的生成 二.实验步骤 1. 快捷键 Ubuntu中: 2. vim VIM是一个非常好的文本编辑器,很多专业程序员使用VIM编辑代码,即使以后你不编写程序,只要跟文本打交道,都应该学学VIM,可以浏览参考一下普通人…
填空 1指令含义 列出文件列表的ls命令 切换目录的cd命令 创建目录的mkdir命令 删除目录的rmdir命令 复制文件的cp命令 删除文件或目录的rm命令 让显示画面暂停的more命令 连接文件的cat命令 移动或更换文件,目录名称的mv命令 显示当前所在目录的pwd命令 2 做移植操作系统的三步:下载bootloader,下载内核,下载文件 3 ARM7TDMI各个字母的含义:支持32位寻址范围,并弥补了ARM6不能在低于5V电源电压下工作的不足 考点: 1.       vi编辑器模式…
在linux下编程的时候,有时候工程项目很大,文件比较多,此时需要使用自动创建Makefile文件功能.也就是使用Autoconf/Automake工具自动生成Makefile,为编译程序带来了方便,当前大多数软件包都是用此方法生成,Autoconf/Automake工具组主要包括autoconf,automake,perl,m4. Autoconfig/Automake工具使用实例 一.首先建立编写一个C源程序文件,命名为hello.c,其代码很简单,就是hello world!程序. 二.使…
## sphinx 生成开发文档#### 配置 1. 运行如下命令,即可生成 conf.py index.rst Makefile 三个文件: `sphinx-quickstart` 2. conf.py 负责全局配置: 1. 注意一定要启用 `autodoc` 2. `autodoc` 对应配置在: `extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.viewcode'] ` 3. 配置 path 以供sphi…
/**************************************************************************** * I.MX6 U-Boot mkconfig hacking * 声明: * 本文主要是为了知道U-Boot中的mkconfig是如何工作的,是如何将配置 * 中的内容进行汇总,同时又将这些内容放在了什么地方. * * 2015-12-19 深圳 南山区平山村 曾剑锋 ************************************…
一. 确认你的系统安装有GNU的如下软件: 1. automake2. autoconf3. m44. perl5. 如果你需要产生共享库(shared library)则还需要GNU Libtool 二. 用automake生成Makefile的步骤如下: 1. 由源文件通过autoscan命令生成configure.scan,然后修改configure.scan并重命名为configure.in2. 由aclocal命令生成aclocal.m43. 由autoconf命令生成configur…
内核数据结构 Linux内核实现了这些通用数据结构,而且提倡大家在开发时重用. 内核开发者应该尽可能地使用这些数据结构,而不要自作主张的山寨方法. 通用的数据结构有以下几种:链表.队列.映射和二叉树 一.链表 1.1 单向链表和双向链表 链表是Linux中最简单.最普通的数据结构. 最简单的数据结构表示一个链表: /* 一个链表中的一个元素 */ struct list_element { void *data; /* 有效数据 */ struct list_element *next; /*…
汇编语言点亮LED 拿到一款全新的芯片,第一个要做的事情的就是驱动其 GPIO,控制其 GPIO 输出高低电平. GPIO口是IO口的一个功能之一. 一.接下来的步骤离不开芯片手册: 1.使能所有时钟,GPIO的所有时钟 2.IO配置,复用GPIO 3.设置IO寄存器 配置IO 的上下拉.速度等. 4.配置GPIO 设置输入输出.默认输出高低电平,是否中断等. 二.在Linux虚拟机上进行交叉编译: arm-linux-gnueabihf-gcc -g -c led.s -o led.o arm…
gcc编译控制过程:(假设源代码为a.c)(1)源文件到预处理文件:    gcc -E -o a.cxx a.c    a.cxx显示调用哪些头文件(2)生成汇编代码:              gcc -S -o a.s a.c        a.s显示汇编指令(3)生成目标代码:              gcc -c -o a.o a.c(4)链接生成可执行文件:      gcc a.o -o aa.out gdb调试程序:(1)生成可执行程序:    gcc -g -o a.debu…
本周成胖子每周一博到了第四周^_^ 前言 主Makefile结构 顶层 第二层 尾记 前言 前一篇,我们大概描述了整个镜像文件的生成过程.本周我们来解析主Makefile,看看主要编译过程是怎么产生的. 主Makefile结构 我们以chaos calmer的代码为例,整个编译的入口是在源码根目录下的Makefile.编译的各种命令都应该在源码根目录下键入. 整个主Makefile的结构如下: world: ifneq ($(OPENWRT_BUILD),1) 顶层 else 第二层 endif…
书写规则———— 规则包含两个部分,一个是依赖关系,一个是生成目标的方法.在 Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么.一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标.如果第一条规则中的目标有很多个,那么第一个目标会成为最终的目标.make所完成的也就是这个目标.好了,还是让我们来看一看如何书写规则. 一.规则举例foo…
9 执行make 一般方法:make. 某些情况:1.可能需要使用make更新一部分过时文件而不是全部 2.需要使用另外的编译器或者重新定义编译选项 3.只需要查看哪些文件被修改,不需要重新编译 所以需要用参数.make的退出状态有0-成功2出现错误,提示错误1使用了-q,存在过时目标 9.1指定makefile文件,例如make -f altmake,表示告诉make将文件altmake作为makefile来解析执行. make会在工作目录依次搜索“GNUmakefile”.“makefile…
原文地址:https://blog.csdn.net/u013774102/article/details/79043559 假设我们有下面这样的一个程序,源代码如下: /* main.c */ #include "mytool1.h" #include "mytool2.h" int main(int argc,char **argv) { mytool1_print("hello"): mytool2_print("hello&qu…
3.1 上章分析回顾 3.1 上章分析出的参数 3.1.1 变量 MAKECMDGOALS = xxx_defconfig KBUILD_EXTMOD = version_h := include/generated/version_autogenerated.h timestamp_h := include/generated/timestamp_autogenerated.h no-dot-config-targets := clean clobber mrproper distclean…
我们来思考一下makefile中的目标究竟是什么?实际上,在默认情况下:    1.make将makefile的目标认为是一个文件:    2.make解释器比较目标文件和依赖文件的新旧关系,决定是否执行命令:    3.make以文件作为第一优先级. 如果不进行特殊的makefile控制,make解释器在解析makefile文件时,在解析到一个规则时,会将这个规则中的目标认为是一个文件,并进一步判断目标文件和依赖文件的新旧关系.     编写以下的makefile文件,并执行make clea…
原文链接 http://bbs.chinaunix.net/thread-408225-1-1.html(出处: http://bbs.chinaunix.net/) make 的运行—————— 一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的.但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等.本章节就是讲述如何使用make命令的. 一.mak…
2.第二部分 这里的usage,targets,savetarget,savedefines都是伪目标. 和all不同,这些伪目标不会被执行,除非显式指定这些目标. 这里有两个目标savetarget,savedefines前边我们提过. 通过命令 make TARGET=esb savetarget可以保存默认的TARGET到Makefile.target中. 通过命令 make TARGET=esb DEFINES=MYTRACE,MYVALUE=4711 savedefines 可以保存默…
第一章:C语言之Makefile基础(一) 第二章:C语言之Makefile基础(二) 再来看一个简单的例子: [root@localhost linux_c]# cat Makefile foo = $(bar) bar = Huh? all: @echo $(foo) [root@localhost linux_c]# make Huh? 我们看到了,bar的值后于foo定义,但执行make的时候仍然打印出Huh?.这说明当make读到foo=$(bar)时,确定foo的值是$(bar),但…
转自:http://blog.csdn.net/jundic/article/details/17886637 前面讲了Makefile 的简单语法和简单的应用模板,但在实际项目应用中比这个肯定复杂很多,但是我想说他的Makefile应用模式都是大同小异,只是代码量和工程复杂度大写而已. 我觉得一个完整的工程目录应该这样: 1.工程文件结构目录应该要非常清晰,并且模块化,各个模块下的Makefile 独立 2.可以分别单独编译各个单独模块成.a 或.so 3.在顶层目录下可以一次性生成可执行文件…
三种构建方式: Makefile scons cmake+ninja https://ninja-build.org…