Makefile编程】的更多相关文章

相关学习资料 http://gcc.gnu.org/ https://gcc.gnu.org/onlinedocs/ http://zh.wikipedia.org/zh/GCC http://blog.csdn.net/casularm/article/details/316149 http://www.bccn.net/Article/kfyy/cyy/jc/200409/9.html http://linux.chinaunix.net/techdoc/develop/2008/12/16…
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/771.html   使用函数: 在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能.make所支持的函数也不算很多,不过已经足够我们的操作了.函数调用后,函数的返回值可以当做变量来使用. 一.函数的调用语法 函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $(<fu…
本文转载自:http://www.himigame.com/gcc-makefile/766.html 概述: 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makef…
最简单的makefile: all: gcc server.c -o ser gcc client.c  -o cli clear: rm ser cli *.o -rf  #rm -rf表示删除文件,而且可以删除非空目录.-rf参数表示递归强制删除.…
[个人体会]0.1 项目文件要合理分隔,功能模块分开放,分别设置Makefile自动编译,                        0.2 源码和头文件分开放,一个或多个头文件对应一个源码文件.                        0.3 头文件中不要定义变量.   1. 默认变量与注释 # 表示注释 @ 取消回显 $^ 表示所有依赖文件 $@ 表示目标 $< 表示第一个依赖文件 2. 伪目标(伪目标重建时,并不影响其他的,所以很方便的添加和描述非预设的动作) .PHONY:cl…
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/770.html   使用变量: 在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方.其与C/C++所不同的是,你可以在Makefile中改变其值.在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”…
本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/768.html   书写规则: 规则包含两个部分,一个是依赖关系,一个是生成目标的方法. 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么.一般来说,定义在Makefile中的目标可能会有很多,但…
Makefile描述整个程序的编译.链接规则 其中还包括了工程中用到的那些源文件及需要产生的目标文件 1)Makefile编程规则 目标(唯一):依赖(可多个) 命令... 伪目标 .PHONY:clean //声明clean命令为伪目标 clean: rm -f *.o led.elf led.dis //命令,删除所列出的中间文件 2)用变量代替连续出现的东西 3)默认变量 $@ : 代表目标 $^   : 代表所有依赖  $<   : 代表第一个依赖 例子: all:led.bin //最…
转自:http://blog.csdn.net/jundic/article/details/17886637 前面讲了Makefile 的简单语法和简单的应用模板,但在实际项目应用中比这个肯定复杂很多,但是我想说他的Makefile应用模式都是大同小异,只是代码量和工程复杂度大写而已. 我觉得一个完整的工程目录应该这样: 1.工程文件结构目录应该要非常清晰,并且模块化,各个模块下的Makefile 独立 2.可以分别单独编译各个单独模块成.a 或.so 3.在顶层目录下可以一次性生成可执行文件…
第2课 - 初识makefile的结构 1. makefile 的意义 (1)makefile 用于定义源文件之间的依赖关系 (在阅读开源软件源码时,可通过Makefile掌握源码中各个文件之间的关系) (2)makefile 说明如何编译各个源文件并生成可执行程序 2. makefile 的规则 (1)makefile 规则的定义 形式1:targets : prerequisites : command 形式2:targets : prerequisites  '\t'    command…
1 语言基础 1.1 c/c++ [转]C/C++ 存储类型 作用域 连接类型 [转]C/C++内存划分 [转]C/C++除法实现方式及负数取模详解 [转]为什么C++编译器不能支持对模板的分离式编译 C/C++:原码.反码和补码 C/C++:拷贝构造函数 C/C++:类模板 1.2 linux C linux内核-双向链表 linux内核-红黑树 1.3 Java Java:基础   1.4 C#   2 开发平台 2.1 .net 2.2 QT QT-[转]基础(略) QT-[转]2D编程…
make 与 makefile .目标的语法 目标名:依赖目标 @命令 @命令 make的命令行使用 make -f make 脚本文件 目标名 .目标的划分 demo.mk demo: gcc -c -fpic input.c gcc -c -fpic primer.c gcc -shared -olibdemo.so input.o primer.o gcc demo.c -ldemo -L. -omain 转变为 demo1.mk: compile: gcc -c -fpic input.…
内核编程实例,多文件的Makefile 经典的hello word测试 ////# cat hello.c #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> static int __init hl_init( void ) { printk("Hello,World! init\n"); return 0; } static void __exit…
Befroe Beginning. 在设置暑假的plan ,关于Linux的书籍如今在看的是ALP和Linux高级程序设计(杨宗德)第三版.在计划中的是Linux高级环境编程. 如今開始关于Linux程序设计的第一篇学习笔记. 本来打算把名字写成教程,只是认为自己全然是新手在自学,还是写学习笔记比較负责和适合. 希望能够一起学习进步. 引入 首先我们如果这样一个场景.我们有一个程序包括了三个文件,各自是源代码文件main_plus,c和function_plus.c以及头文件mydefine_p…
本站文章均为李华明Himi原创,转载务必在明显处注明: 转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/gcc-makefile/766.html 概述: 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识…
GNU Make简介 大型项目的开发过程中,往往会划分出若干个功能模块,这样可以保证软件的易维护性. 作为项目的组成部分,各个模块不可避免的存在各种联系,如果其中某个模块发生改动,那么其他的模块需要相应的更新.如果通过手动去完成这个工作的话,对于小型的项目可能还行,但是对于比较大型的项目就几乎是不可能的. 因此Linux 系统提供了一个自动维护和生成目标程序的工具 make,它可以根据各个模块的更改情况去重新编译连接目标代码 Make 工具的作用就是实现编译连接过程的自动化.它定义了一种语言,用…
1. 在Linux中,make工具可以维护程序模块关系和生成可执行程序.它可根据程序模块的修改情况重新编译链接生成中间代码或最终的可执行程序.执行make命令,需要一个名为Makefile的文本文件,其定义了模块间的依赖关系,指定文件的编译顺序,以及编译所使用的命令.make和Makefile文件使整个项目的源程序文件可以自动编译,极大地提高了软件开发效率. 一个简单的Makefile文件: main:main.o module1.o module2.o gcc main.o module1.o…
学习android 终究还是需要研究一下其底层框架,所以,学习c++很有必要. 这篇博客,算是linux(ubuntu) 下学习 c++ 的一个入门. 刚开始学习编程语言的时候,最好还是使用命令行操作,抛开IDE 工具. 1. 编辑器 编辑器推荐 vi / vim(如果你有耐心的话,可以学习一下 vi  的命令).scite(比较好用)等. 2. 编译器 针对不同的编译器,c++ 源文件的后缀名称还不一样. 关于编译器 gcc 也好,g++ 也好,CC 也罢...刚开始不要计较太多,容易迷惑自己…
做开发快3年了,在linux下编译安装软件算是家常便饭了.就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题.看来还是像vs.codeblocks这样的ide把人弄蠢了.便下定决心一定要好好学习下如何在linux下纯手工gcc编译c项目.今天学了2点,一个是库文件处理,另一个是makefile编写. 学习的系统是centos6.6,编译升级的gcc4.8.2,明天写个博客总结下这回gcc安装的过程,每次都能学到些东西. gcc的编译过程 首先需要清楚gcc编译做了些什么 源文件…
根据近期需要hadoop的MapReduce程序集成到一个大的应用C/C++书面框架.在需求make当自己主动MapReduce编译和打包的应用. 在这里,一个简单的WordCount1一个例子详细的实施细则,注意:hadoop版本号2.4.0. 源码包括两个文件.一个是WordCount1.java是详细的对单词计数实现的逻辑.第二个是CounterThread.java.当中简单的当前处理的行数做一个统计和打印.代码分别见附1. 编写makefile的关键是将hadoop提供的jar包的路径…
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相关联的文件对象.返回的确切类型取决于给makefile()提供的参数. 这些参数的解释方式与内置open()函数的解释方式相同,除了makefile方法唯一支持的mode值是'r'(默认)'w'和'b'. 套接字必须处于阻塞模式; 它可能有超时,但是如果超时发生,文件对象的内部缓冲区可能会以不一致的…
1.关于程序的编译和链接 一般来说,无论是C.C++首先要把源文件编译成中间目标文件即 Object File(windows为.obj文件,unix为.o文件),这个动作叫做编译(compile).然后再把大量的Object File合成执行文件,这个动作叫作链接(link). 1.1编译 编译时编译器只检查语法是否正确,函数与变量的声明是否正确.如果函数未被声明,编译器会给出一个警告,但可以生成Object File.一般来说,每个源文件都应该对应于一个中间目标文件(O文件或是OBJ文件).…
参考:http://blog.csdn.net/wanglang3081/article/details/49423105 (1)Makefile本质上来讲也是shell脚本,即每条command都是shell进程,运行完shell进程都会退出.   (2)shell代码行,如果有=的话,=两边不能有空格   (3)Makefile中的shell,每一行是一个进程,不同行之间变量值不能传递.所以,Makefile中的shell不管多长也要写在一行.可以用\来分行写,格式更清晰一点. SUBDIR…
针对的是对Makefile一点都不会的小白哦! 练习之前我们要做好准备: (1):第一步创建一个目录,因为实验过程中生成的文件会很多,不要把你系统里的文件搞得乱七八糟. [cjj@bogon ~]$ mkdir makedemo1 [cjj@bogon ~]$ cd ./makedemo1/ (2):接下来你需要写四个程序 [cjj@bogon makedemo1]$ vi f1.c ********************************************************…
在linux下我们都知道可以利用命令gcc hello.c -o hello 命令来变异c语言程序.其中gcc hello.c -o hello中 hello是给这个编译后生成的可执行文件取个别名 再利用./hello命令运行c程序. 可是如果c程序比较多呢?每个都这样编译太麻烦了,聪明的程序员想出了一个很好的工具,那就是make,利用make来实现同时编译. 首先,假设有3个文件 1.greeting.h 其中内容是 #ifndef _GREETING_H #define _GREETING_…
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相关联的文件对象.返回的确切类型取决于给makefile()提供的参数. 这些参数的解释方式与内置open()函数的解释方式相同,除了makefile方法唯一支持的mode值是'r'(默认)'w'和'b'. 套接字必须处于阻塞模式; 它可能有超时,但是如果超时发生,文件对象的内部缓冲区可能会以不一致的…
预处理:也就是包括须要的头文件,用#include<标准头文件>或#include "自己定义的头文件" 宏定义,如:#define PI 3.1415926 查看用宏定义的值替换宏名称,如:gcc -E test.c 带參数的宏:MAX(x,y) (x)>(y)? ((x):(y))   //用法与函数一样 宏运算:     #define PRINT(n) printf(#n"=%d",n)   //#n 就是把传入的变量值作为字符串放在那里…
GNU make Linux程序员必须学会使用GNU make来构建和管理自己的软件工程.GNU的make能够使整个工程的编译.链接只需要一个命令就可以完成. makefile make在执行时,需要一个命名为Makefile的文件.Makefile文件描述了整个工程的编译.链接等规则.其中包括:工程中哪些源文件需要编译以及如何编译:需要创建哪些库文件以及如何创建这些库文件.如何最后产生我们想要的可执行文件. Makefile(例) hello:main.o func1.o func2.o gc…
Makefile的作用就是"自动化编译" 一.Makefile基本规则 下面给出几个简单实例: 第一步:分别用vim创建prog.c code.c code.h三个文件 prog.c #include <stdio.h> #include "code.h" int main(void) { int i = 1; printf ("myfun(i) = %d\n", myfun(i)); } code.c #include "…
  转自:http://blog.chinaunix.net/uid-23929712-id-2650328.html   概述: make从Makefile中文件中获取模块间的依赖关系,判断哪些文件已经过时,根据这些信息make确定哪些文件需要重新编译,然后使用Makefile中的编译命令进行编译   make命令参数详解 -C dir:在读取Makefile文件前,先切换到“dir”目录下,也就是把dir作为当前目录 -d     :make执行时打印出所有的调试信息 -e     :不允许…