Makefile 文件格式】的更多相关文章

Makefile包含 目标文件.依赖文件.可运行命令三部分. 每部分的基本格式例如以下: test: prog.o  code.o gcc  -o  test   prog.o   code.o 当中,第一行的test是目标文件. prog.o.code.o是依赖文件: 第二行的gcc -o test prog.o code.o是可运行命令. 整个Makefile文件都是这样的格式. 下面是一些example: -----------------------Makefile example 1-…
Makefile包含 目标文件.依赖文件.可运行命令三部分. 每部分的基本格式例如以下: test: prog.o  code.o gcc  -o  test   prog.o   code.o 当中,第一行的test是目标文件. prog.o.code.o是依赖文件: 第二行的gcc -o test prog.o code.o是可运行命令. 整个Makefile文件都是这样的格式. 参考链接: https://blog.csdn.net/haoel/article/details/2886 M…
makefile make命令:负责c/c++程序编译与链接 make根据指定命令进行建构 建构规则文件:GNUmakefile , makefile,Makefile makefile 文件格式 makefile 语法 --基本语法,变量,条件判断,循环,函数 makefile 文件的基本格式 target...:prerequisites... [tab键]  commands makefile文件的规则 makefile 文件由一系列规则构成 规则目的:建构目标的先决条件是什么以及如何构建…
1.gcc参数 -o指定生成文件名 -c只编译不链接 2.makefile标准格式 CC=gcc #编译器变量,#代表注释 SRCS=main.cpp\#源文件变量 a.cpp\ b.cpp\ c.cpp OBJS=$(SRCS:.cpp=.o) #将SRCS中的.cpp全部替换为.o文件 EXEC=myapp#可执行文件编程 start: $(OBJS)#依赖文件 $(CC) -o $(EXEC) $(OBJS) .cpp.o: #每一个源文件和对应的目标文件 $(CC) -o $@ -c $…
https://blog.csdn.net/twc829/article/details/72729799 make命令是一个常用的编译命令,尤其在C/C++开发中,make命令通过makefile文件中描述源程序之间的依赖关系进行自动编译: makefile文件是按照规定格式编写,需说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系: 首次执行make命令时,编译所有相关文件,之后再执行make命令时,以增量方式进行编译,即只对修改的源文件相关的目标文件进行编译: 注:…
5.11 库的使用 代码的复用是计算机程序设计语言中的一个重要的概念.可以把编译好的目标文件模块统一放到一个库中,使得程序员可以在不同的程序中共享这些代码. 在Linux操作系统下,最后连接生成可执行文件时,如果链接的是一般的.o文件,则整个文件的内容都会被装入可执行文件中:如果链接的是库,则只是从库中找到程序中用到的变量和函数,将它们装入可执行文件中,那些在库中没有被程序所引用的变量和函数则不会被链接到最终的可执行文件. 所以,库可以节省大量的开发时间.在写较大程序时,最好把程序模块放在库中.…
执行make,会在当前目录查找makefile文本文件(记录了源代码如何编译的详细信息). 内核相关的函数信息放置在/usr/lib./usr/lib64里. 在Tarball(一般为xxx.tar.gz)中,软件开发商通常提供了源码,提供configure文件或config文件(检测用户的操作环境,并建立makefile文件),本软件的简易说明和安装说明. configure文件或config文件检测的内容包括编译器,函数库,操作系统平台,头文件等. 软件Tarball安装步骤,将Tarbal…
配置过程最终结果是生成.config文件,我们想要对配置的目的有很清楚的了解,必须先对.config文件进行分析.通过cd命令切换到linux-2.6.22.6内核目录,输入vi .config 可以看到如下图所示内容(截图仅部分内容): 分析.config文件被什么文件使用,为了简便化我们以网卡DM9000配置项为例进行分析.首先要在.config文件内找到关于DM9000相应配置,vi编辑器环境下输入 /DM9000  命令既能执行搜索命令,搜索的结果如下图: 这里CONFIG_DM9000…
开放源码的软件安装与升级简介 什么是开放源码.编译程序与可执行文件 开放源码:程序代码,写给人类看的程序语言 编译程序:将源码编译成机器能看得懂的语言 可执行文件:经过编译变成二进制程序后机器看得懂可以执行的文件 什么是函数库 类似子程序的角色,可以被调用来执行的一段功能函数 什么是make与configure 一套软件不仅仅有一个程序,而是一对程序代码文件,所以除了每个主程序和子程序均需要编译过程的命令外,还需要写上最终的链接程序.使用make命令,可以简化编译过程. (1)执行make时,会…
最近一直在学习makefile是如何编写的.当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令,它让你的工作省去了很大的力气,但是你要学习如何编写makefile文件. makefile是一种特殊的文件格式,他将会帮你自动管理你的项目,很强大.   下面通过实例一步步讲解如何使用makefile.下面的四段代码.   //main.cpp #include "functions.h" int…
这东西已经写,我们没有时间发布,如今,终于有时间稍微长送记录汇总uboot学习过程.具体了.以后忘了也能够再温习回来嘛有些特殊字符显示得乱掉了 Makefile追踪技巧: 技巧1:能够先从编译目标開始顺藤摸瓜地分析,先不要关注详细细节,着重关注基本的代码结构和编译过程 技巧2:追踪分析时要通过文本或者其它途径临时记录重要的线索 技巧3:将基本的Makefile文件里export出来的变量以及include的文件提取出来,看看include的文件大致是些什么文件,当看到一些来历不明的变量或者操作时…
在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 led.bin : crt0.S led.c arm-linux-gcc -c -o crt0.o crt0.c arm-linux-gcc -c -o led.o led.c arm-linux-ld -Ttext 0x00000000 -g crt0.o led.o -o led_elf arm-linux-o…
首先来看一个简单的Android makefile,这个是我上篇文章写的,重新摘出来: LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := eng LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog LOCAL_SRC_FILES:= \ ppp.c LOCAL_MODULE:= PPPreboot include $(BUILD_EXECUTABLE) #include $…
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42239705  参考博客 : [嵌入式开发]嵌入式 开发环境 (远程登录 | 文件共享 | NFS TFTP 服务器 | 串口连接 | Win8.1 + RedHat Enterprise 6.3 + Vmware11) 开发环境 : -- 操作系统 : Vmware11 + RedHat6.3 企业版 + Win8.1; -- 硬件 : OK-6410-A 开发…
这次分析源码根目录下的Makefile,它负责读入配置过的信息,通过OBJS.LIBS等变量设置能够参与镜像链接的目标文件,设定编译的目标等等. HOSTARCH := $(shell uname -m | \ sed -e s/i./x86/ \ -e s/sun4u/sparc64/ \ -e s/arm.*/arm/ \ -e s/sa110/arm/ \ -e s/ppc64/powerpc/ \ -e s/ppc/powerpc/ \ -e s/macppc/powerpc/\ -e…
错误情况1:makefile:5: *** 遗漏分隔符 . 停止 原因:具体的编译动作,开头不可以有空格,留白是由 按tab键形成的. 解决方法:去掉空格,改为tab键后,再执行make命令,成功. 错误情况2:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0' 错误原因:是因为你用gcc编译.cpp文件.按系统默认.cpp文件是c++的文件格式解决方法: 方法1. gcc -o t t.cpp -lstdc++ //-…
相信大家对makefile都不陌生,在Linux下编写程序基本都离不开makefile的编写,我们都知道多个.c文件经过编译器编译后得到多个.o文件,这些文件是互相独立的,但最终我们要得到一个可正常运行的文件,很显然这个过程就是连接,将多个.o文件连接为一个文件,这个文件是.elf文件.下面来举个例子说明以下. test.elf : part1.o part2.o gcc -o test.elf part1.o part2.o //这种写法虽然太过原始,但能说明问题即可 %.o : %.c gc…
7z文件格式及其源码的分析(二) 一. 准备工作: 1. 源码下载: 可以从官方中文主页下载:http://sparanoid.com/lab/7z/. 为了方便, 这里直接给出下载链接: http://downloads.sourceforge.net/sevenzip/7z920.tar.bz2 . 2. 工具准备: 源码中给的工程文件都是vc6.0的工程.  作者说他不喜欢新vs的界面. 哎.  不过没关系, 我们使用VS2008也一样可以. 有极少地方需要修改一下.  我们使用VS200…
最近一直在学习makefile是如何编写的.       当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令,它让你的工作省去了很大的力气,但是你要学习如何编写makefile文件.       makefile是一种特殊的文件格式,他将会帮你自动管理你的项目,很强大.它是这样工作的:     1.make会在当前目录下找名字叫“Makefile”或“makefile”的文件.    2.如果找到,它…
编译:把高级语言书写的代码转换为机器可识别的机器指令.编译高级语言后生成的指令虽然可被机器识别,但是还不能被执行.编译时,编译器检查高级语言的语法.函数与变量的声明是否正确.只有所有的语法正确.相关变量定义正确编译器就可以编译出中间目标文件.通常,一个高级语言的源文件都可对应一个目标文件.目标文件在Linux中默认后缀为“.o”(如“foo.c”的目标文件为“foo.o”). 链接:将多.o文件,或者.o文件和库文件链接成为可被操作系统执行的可执行程序(Linux环境下,可执行文件的格式为“EL…
转自:http://www.cnblogs.com/lifexy/p/7065175.html 在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件 1 1 led.bin : crt0.S led.c 2 2 arm-linux-gcc -c -o crt0.o crt0.c 3 3 arm-linux-gcc -c -o led.o led.c 4 4 arm-l…
最近一直在学习makefile是如何编写的.当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make命令,它让你的工作省去了很大的力气,但是你要学习如何编写makefile文件. makefile是一种特殊的文件格式,他将会帮你自动管理你的项目,很强大.   下面通过实例一步步讲解如何使用makefile.下面的四段代码.   //main.cpp #include "functions.h" int…
时候,我们在开发的时候需要将本次工程的代码分成多个子目录来编写,但是在Makefile的编写上却是个问题,下面我就教大家怎么构建带有子文件夹的源代码目录的自动扫描编译 下面这张图是我的文件树 这里面src目录下是我的源代码,我将功能代码分成了三个子模块,分别为test1, test2, test3, 调用这三个子模块的是main.cpp文件,下面我将这三个子模块的代码 //  src/test1/test1.h #ifndef __TEST1_H__ #define __TEST1_H__ in…
做linux开发的,一般还是在windows上装个虚拟机,在windows上开发, 所以就会出现dos文件与unix文件格式不一致,当windows上的文件在linux上用的时候,经常在每行的末尾会出现^M ,这会导致makefile或者其他文件无法正常使用,所以只能通过手动来去除这些^M, 参考了一些资料, 总结如下几种方法: 1.用SED来去除: sed -i 's/^M//g' filename 其中^M是按ctrl+V+M得出,这句sed脚本表示替换^M为空并保存到原文件. 2.用dos…
linux内核makefile概览 本博客参照内核官方英文文档 linux的内核makefile主要用于编译整个内核源码,按照用户的需求生成各种目标文件,对于用户来说,编译内核时非常简单的,只需要几个指令就可以做到,但是对于一个驱动开发者而言,了解内核源码的编译机制是非常必要的. make 和 makefile 需要了解的是:make是linux下的一个程序软件,makefile相当于针对make程序的配置文件,当我们执行make命令时,make将会在当前目录寻找Makefile文件,然后根据M…
一.交叉工具链 嵌入式Linux开发采用交叉开发,简单来说就是在宿主机(PC机)上面编译出能够在其他硬件平台上面运行的程序.在这个过程中,需要用到许多的交叉工具,这些交叉工具的集合就叫做交叉工具链.下面列举嵌入式开发中常用的交叉工具. 1.交叉编译器    arm-linux-gcc 交叉编译器的命名十分有特色,前面两个字符串表明了他们可以使用的平台.例如:arm-linux-gcc说明用来编译出用于ARM平台的程序. 用法:arm-linux-gcc hello.c -o hello 2.交叉…
  转自:http://blog.chinaunix.net/uid-23929712-id-2650328.html   概述: make从Makefile中文件中获取模块间的依赖关系,判断哪些文件已经过时,根据这些信息make确定哪些文件需要重新编译,然后使用Makefile中的编译命令进行编译   make命令参数详解 -C dir:在读取Makefile文件前,先切换到“dir”目录下,也就是把dir作为当前目录 -d     :make执行时打印出所有的调试信息 -e     :不允许…
target := exe source_code = hello.c OBJS = $(source_code:.c=.o) $(target):$(OBJS) gcc $^ -o $@ clean: $(RM) $(target) $(OBJS) 一上来直接展示一份makefile代码. 功能: 从功能角度来说,这份makefile代码可以编译出对应的目标文件,并且顺利执行. 思考: 这其实是一份质量不合格的makefile代码.请仔细观察. .... 什么 ?  你看着这个makefile…
Qt的.pro文件格式解析 在Qt中用qmake生成makefile文件,它是由.pro文件生成而来的,.pro文件的具体格式语法如下: 1.注释 .pro文件中注释采用#号,从"#"号开始,到该行的结束,例如: 2.模板TEMPLATE 模板变量告诉qmake为这个应用程序生成那种makefile文件.下面是可提供使用的选择: TEMPLATE=app app-建立一个应用程序的makefile.这是个默认值,所以如果模板没有被指定,该模板将会被使用. lib -建立一个库的make…
说说Makefile那些事儿 |扬说|透过现象看本质 工作至今,一直对Makefile半知半解.突然某天幡然醒悟,觉得此举极为不妥,只得洗心革面从头学来,以前许多不明觉厉之处顿时茅塞顿开,想想好记性不如烂笔头,便来说说Makefile那些事儿. Makefile到底是个啥玩意儿 Makefile就是一文本文件. ----------------------------------------------- $ file Makefile Makefile: ASCII make commands…