01 2018 档案
摘要:001_Makefile的引入及规则 使用keil、mdk、avr 等工具开发程序时点点鼠标就可以编译了, 它的内部机制是什么?它怎么组织管理程序?怎么决定编译哪一个文件? gcc -o test a.c b.c //简单 a.c ==>APP 执行编译(预处理、编译、汇编)、链接 a.c ==>
阅读全文
摘要:gcc 和 arm-linux-gcc的常用选项 gcc 的使用方法: gcc 【选项】 文件名 gcc常用选项: -v:查看gcc 编译器的版本,显示gcc执行时的详细过程 -o < file > Place the output into < file > 指定输出文件名为file,这个名称不能
阅读全文
摘要:make是以从上到下的顺序读入Makefile中的内容的。然而,处理Makefile中的语句却并非完全从上到下。 大体上,make处理一个Makefile分为两个阶段。第一个阶段包含: 1.make读入Makefile,以及Makefile中所包含的其他Makefile; 2.make分析并获得变量
阅读全文
摘要:在对应目录中放入对应的文件 执行make后报错: 这是在构建依赖文件时,gcc因为找不到foo.h而报错。那是因为foo.h和foo.c放在不同的目录中,这样需要使用gcc的 -I 选项,指定包含路径,所以,更改后的Makefile如下: 这样就完成了支持头文件目录指定。 从Makefile的角度看
阅读全文
摘要:先手工创建几个文件目录: 接下来先创建code/foo/src目录下的Makefile: 具体和complicated项目的差别可以看书或者上篇随笔。 第一个提示没有那个目录,可以在include的时候加上'-'就可以忽略这个,因为这里对我们的项目没有实质影响,但是新手对于报错或者警告总是不放心,故
阅读全文
摘要:现在我们再对complicated项目做一些更改,增加程序文件间依赖关系的复杂度。 在之前的Makefile不做更改的情况下,我们make一下: 在这次成功编译的基础上,我们再做一些改动,注意在这之前不要执行make clean,否则不能发现新问题。 从结果看,尽管foo.c和main.c都被重新编
阅读全文
摘要:Makefile中存在一个include指令,它的作用如同C语言中的#include预处理指令。在Makefile中,可以通过使用include指令将自动生成的依赖关系文件包含进来,从而使得依赖关系文件中的内容成为Makefile的一部分。 在此之前,先介绍一下Makefile中的include的用
阅读全文
摘要:后面会介绍gcc获得源文件依赖的方法,gcc这个功能就是为make而存在的。我们采用gcc的-MM选项结合sed命令。使用sed进行替换的目的是为了在目标名前加上“objs/”前缀。gcc的-E选项,预处理。在生成依赖关系时,其实并不需要gcc编译源文件,只要预处理就可以获得依赖关系了。通过-E选项
阅读全文
摘要:在大多项目中都会合理设计目录结构来提高维护性,在编译一个项目时会产生大量中间文件,如果中间文件直接和源文件放在一起,就显得杂乱而不利于维护。在为现在这个complicated项目编写makefile之前,我们先给出目录结构需求: 1.将所有的目标文件放在objs子目录中; 2.将最终生成的可执行程序
阅读全文
摘要:通过函数能显著增强Makefile的功能。对于simple项目的Makefile,尽管使用了模式规则,但还是有一件比较麻烦的事情,就是要在Makefile中指明每一个项目源文件。下面介绍几个后期会使用到的函数,更多请参考《GUN Make》。 1.abspath函数 从命名就应该能够猜出它的作用。a
阅读全文
摘要:变量的类别有递归扩展变量和简单扩展变量。只用一个“=”符号定义的变量被称为递归扩展变量(recursively expanded variable)。通过下面例子观察递归扩展变量的特点。 从结果来看,递归扩展变量的引用是递归的。 上例所示的Makefile,CFLAGS变量最后都会被展开为“-Ifo
阅读全文
摘要:让你的makefile更专业。 在上一个Makefile所在目录下通过touch命令创建一个clean文件,然后执行make clean,将发现make总是提示clean文件是最新的,而不是按我们期望的那样对项目文件进行清楚操作。 make这样的行为,是因为它将clean当做文件来处理,在当前目录下
阅读全文
摘要:编写Makefile的第一步,不是一个猛子扎进去试着写一个规则并对之调试,而应该先采用面向依赖关系的思考方法勾勒出makefile要表达怎样的依赖关系,这一点尤为重要。通过不断地练习这种思考方法,才可能达到流畅地编写makefile的能力。 上例的一个依赖关系类图为: 表示simple可执行文件是通
阅读全文
摘要:目录 1、Makefile学习之路1————基础 2、Makefile学习之路2————规则 3、Makefile学习之路3————规则的运行 4、Makefile学习之路4————让你的Makefile更专业 5、Makefile学习之路5————变量 6、Makefile学习之路6————通过函
阅读全文
posted @ 2018-01-08 19:50
Liu_Jing
摘要:在上一篇进行了汇编语言的编写后,这一节采用C语言来编写,毕竟C语言才是我们使用最多的语言。 本节要点: 1)用C语言方式点亮LED灯; 2)分析反汇编代码;了解函数调用栈,深入的分析代码; 3)编写C语言的库函数版本,方便以后开发; 首先贴出一段代码: start.s LED.c: 在传统的IDE开
阅读全文
摘要:先看将要用到的几条汇编代码: 1)LDR (load):读内存 LDR R0, 【R1】 假设R1的值是 X,读取地址 X 上的数据(4字节),保存在R0中 2)STR(store):写内存命令, STR R0, 【R1】 假设 R1的值是 X,把 R0 的值写到地址 X(4字节) 3)B:跳转 4
阅读全文

浙公网安备 33010602011771号