摘要:make ARCH=arm CROSS_COMPILE=arm-hisiv100nptl-linux- menuconfig 这时什么意思呢? ARCH 即architecture,就是选择编译哪一种cpu architecture,也就是编译arch/目录下的哪一个子目录。如指定make ARCH
阅读全文
随笔分类 - GCC及Makefile
GCC、Makefile的书写
摘要:######################################################################### # # Makefile used for building application. # # The default target (all) builds application in three formats : # *.rec : ...
阅读全文
摘要:######################################################################### # # Makefile used for building application. # # The default target (all) builds application in three formats : # *.rec : ...
阅读全文
摘要:GNU Make make是负责从项目的源代码中生成最终可执行文件和其他非源代码文件的工具。 make命令本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。 其标准形式为:make [flags] [macro definitions] [targets] Unix系统下标志位flags选项
阅读全文
摘要:1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可
阅读全文
摘要:MAKEFILE多分支写法: Android中的NDK程序android.mk判断当前是哪种CPU架构: MAKEFILE多条件“或”: MAKEFILE多条件“与”:
阅读全文
摘要:makefile变量说明: 1.总控Makefile中使用“-e”参数覆盖下一层Makefile中的变量。 2.父级Makefile向子级Makefile传送变量方式:export <variable ...> 3.禁止父级Makefile向子级Makefile传送变量:unexport <vari
阅读全文
摘要:在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙。下面总结了一些。1:尽在Makefile文件的目标项冒号后的另起一行的代码才是shell代码。eg:xx = xx1 // 这里时makefile代码yy:xx = xx2 //
阅读全文
摘要:目的:编写一个实用的makefile,能自动编译当前目录下所有.c/.cpp源文件,支持二者混合编译。并且当某个.c/.cpp、.h或依赖的源文件被修改后,仅重编涉及到的源文件,未涉及的不编译。 二要达到这个目的,用到的技术有:1-使用wildcard函数来获得当前目录下所有.c/.cpp文件的列表
阅读全文
摘要:代码如下: makefile 代码: %.d: %.c $(CC) -M $(CPPFLAGS) $< > $@.$$$$; \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ rm -f $@.$$$$ makefile 代码: %.d:
阅读全文
摘要:隐含规则————在我们使用Makefile时,有一些我们会经常使用,而且使用频率非常高的东西,比如,我们编译C/C++的源程序为中间目标文件(Unix下是[.o]文件,Windows下是[.obj]文件)。本章讲述的就是一些在Makefile中的“隐含的”,早先约定了的,不需要我们再写出来的规则。“...
阅读全文
摘要:一、函数的调用语法 函数调用与变量一样,也是以“$”来标识的,其语法如下: $( ) 或是 ${ } 就是函数名,是函数的参数,参数间以逗号“,”分隔,而函数名和参数之间以“空格”分隔。函数调用以“$”开头,以圆括号或花括号把函数名和参数括起。二、字符串处理...
阅读全文
摘要:本节我们讨论一个Makefile中的一个重要的特殊目标:伪目标。 伪目标是这样一个目标:它不代表一个真正的文件名,在执行make时可以指定这个目标来执行其所在规则定义的命令,有时我们也可以将一个伪目标称为标签。使用伪目标有两点原因: 1. 避免在我们的Makefile中定义的只执行命令的的目标(此目
阅读全文
摘要:文件的内容:1. BIN文件是 raw binary 文件,这种文件只包含机器码。2. ELF文件除了机器码外,还包含其它额外的信息,如段的加载地址,运行地址,重定位表,符号表等。所以ELF文件的体积比对应的BIN文件要大。文件的执行:1. 执行raw binary很简单,只需要将程序加载到其起始地...
阅读全文
摘要:前记: 经常浏览博客园的同学应该会觉得本文有标题党之嫌,这个标题的句式来自于MiloYip大牛的大作《C++强大背后》,在此,向Milo兄致意。GCC,全称GNU Compiler Collection,是一套GNU开发的编译器环境,它的创始人便是大名鼎鼎的Richard.M.Stallman。最初...
阅读全文
摘要:1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。经过...
阅读全文
摘要:变量 1. Makefile中变量和函数的展开(除规则命令行中的变量和函数以外),是在make读取makefile文件时进行的,包括“define”定义的变量。 2. 变量可以用来代表一个文件名列表、编译选项列表、程序运行的选项参数列表、搜索源文件的目录列表、编译输出的目录列表等。 3. 变量名是不
阅读全文
摘要:实际上是gcc命令支持-D宏定义,相当于C中的全局#define: gcc -D name gcc -D name=definition Makefile中可以定义变量(和宏很像),但是是给make解释器用的,对所编译的文件完全没有作用。 MSTAR:宏定义方式:字串定义方式和值定义方式 CC_TV
阅读全文
摘要:编译:把高级语言书写的代码转换为机器可识别的机器指令。编译高级语言后生成的指令虽然可被机器识别,但是还不能被执行。编译时,编译器检查高级语言的语法、函数与变量的声明是否正确。只有所有的语法正确、相关变量定义正确编译器就可以编译出中间目标文件。通常,一个高级语言的源文件都可对应一个目标文件。目标文件在
阅读全文
摘要:自动变量假设您编写一个编译‘.c’文件生成‘.o’文件的规则:您怎样编写命令‘CC’,使它能够操作正确的文件名?您当然不能将文件名直接写进命令中,因为每次使用隐含规则操作的文件名都不一样。您应该使用make的另一个特点,自动变量。这些变量在规则每次执行时都基于目标和依赖产生新值。例如您可以使用变量‘...
阅读全文