简单的makefile】的更多相关文章

相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide.其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次.你也可以自己写makefile,让别人对你头来羡慕的目光. 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正.简单的说,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至可以在m…
我在网上先找了一个最简单的makefile. 建立一个 TestCpp 目录,简单的写几行代码,命名为“TestCpp.cpp”,然后和这个最简单的 makefile 一起扔进去: TestCpp.cpp: #include <iostream> using namespace std; int main(int argc, char *argv[]) { cout<<"Hello C++ Language !\n"<<endl; ; } makef…
用自己的话,解释清楚这些~ Makefile是程序员编写出来指导编译器编译程序源码为目标文件(可执行文件,或链接库) 这里只写一个简单的Makefile 作为例子 其需求如下: frank@ubuntu:~/muban/M$ tree . ├── compare.cpp ├── compare.h ├── edit ├── main.cpp └── Makefile 写的MakeFile文件如下: edit : main.o   compare.o g++ -o edit main.o comp…
建立静态库 建立四个文件 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…
编程通常遵循一个相当简单的程序:编辑源文件,编译源代码成可执行的格式,调试结果.尽管将源代码翻译成可执行程序是常规的过程,如果做的不正确,程序员可能会浪费大量的时间去追踪问题.大多数的开发者都经历过这样的挫折:修改一个函数并运行新代码却发现他们的修改并没有修正bug.后来他们发现他们再也不能执行这个修改过的函数,由于一些程序的错误,如未能重新编译源代码.未能重新链接成可执行文件.未能重建成一个jar包.由于不同版本程序的开发,或由于其他平台和支撑库的其他版本,随着程序复杂性的增加,这些寻常的工作…
一个简单的makefile文件:可以编译指定目录下的所有c和cpp文件,暂未加入自动头文件的依赖. #!/bin/bash #编译器 CROSS_COMPILING_PATH = #源文件路径 VPATH += ./ #库文件路径 LIB_PATH = -L ./ #CFLAG 头文件路径 CFLAG = -I./ #链接的库 CFLAG += -lpthread CFLAG += -lrt CC = $(CROSS_COMPILING_PATH)gcc CXX = $(CROSS_COMPIL…
打算学习一下Linux,这两天先看了一下gcc的简单用法以及makefile的写法,今天是周末,天气闷热超市,早晨突然发现住处的冰箱可以用了,于是先出去吃了点东西,然后去超市买了一坨冰棍,老冰棍居多,5毛钱一根,还有几根1.5的. 嗯 接着说gcc的事 先把源代码贴上来 //gettime.h #ifndef _GET_TIME_H_ #define _GET_TIME_H_ void PrintCurrentTime(); #endif //gettime.c #include <stdio.…
http://www.blogjava.net/canvas/articles/quick_makefile.html 几个简单适合小程序的Makefile,可直接拷贝使用,自己mark一下,这样长时间不用Makefile也不用去看手册了 0.只有一个文件 # 变量的定义,方便使用CC      = gccCCFLAGS = -O2 -sBIN     = testOBJ     = root_password_tool_win32.o $(BIN) : $(OBJ)    $(CC) $(CC…
摘要 假定你对linux已经比较的熟悉,假定你编程已经稍有经验,本文不会对文章作出太多基础性解释,看不懂莫怪,只当作给学习的朋友一个引导思路,我也是一个初学者,边学边写,将学会的教给大家,文章有错误之处误导了朋友,请轻喷 makefile 假定你对linux已经比较的熟悉,假定你编程已经稍有经验,本文不会对文章作出太多基础性解释,看不懂莫怪,只当作给学习的朋友一个引导思路,我也是一个初学者,边学边写,将学会的教给大家,文章有错误之处误导了朋友,请轻喷 main.cpp #include <ios…
下午闲来无聊,就打开很久没动过的linux系统想熟悉熟悉在linux上面编译代码,结果一个makefile文件搞到晚上才搞定,哈哈! 先把代码简单贴上来,就写了一个冒泡排序: sort.h: #ifndef SORT_H#define SORT_H #include<stdio.h>#include<time.h>#include<stdlib.h> #define N 10#define swap(a,b) {a^=b;b^=a;a^=b;}#define ins(a…
makefile不是总用到,每次用到的时候总要重新找资料,有点麻烦(怪自己基础知识不扎实,汗).留一个通用模板放这,方便以后使用 CC = gcc CXX = g++ LINK = g++ CFLAGS = -g -Wall -O2 TARGET = mk0 SRCS = $(wildcard *.cpp) SRCS += $(wildcard *.c) CXX_OBJS = $(patsubst %.cpp, %.o, $(wildcard *.cpp)) C_OBJS = $(patsubs…
一.须要用到的hw.cpp hw.h funtest.cpp funtest.h makefile 几个測试文件 1.hw.cpp代码例如以下: #include "hw.h" #include "funtest.h" using namespace std; using namespace boost; int main() { timer t; { int i=1; } auto i="abc"; cout<<i<<e…
makefile中的编写内容如下: www:hello.c x.h gcc hello.c -o hello clean: rm hello www:hello.c  x.h 表示生成www这个文件需要hello.c 和 x.h这两个文件 rm hello 表示在shell中执行make clean 时会执行rm  hello 即删除hello这个文件…
#common makefile header LOCAL_INCLUDE := \ -I/xxx/ACE/ACE/ LOCAL_FLAGS := $(LOCAL_INCLUDE) LIBS := -L/xxx/ACE/ACE -lACE CCC :=/usr/bin/g++CC :=/usr/bin/gccAR :=/usr/bin/ar -r OBJS = test.oTARGET = testRM = rm -f $(TARGET):$(OBJS) $(CCC) -o $(TARGET)…
单一程序 准备一个hello.c #include <stdio.h> int main(void) { printf("Hello World!\n"); } gcc hello.c,执行文件名被自动设置成a.out,可用./a.out直接执行,因为这是编译成功的可执行二进制程序 gcc -c hello.c产生目标文件hello.o gcc -o hello hello.o利用目标文件制作一个名为hello的执行文件 主.子程序链接 准备一个主程序thanks.c,一个…
makefile 自动化变量:   $@ : 规则的目标文件名  例如:main:main.o test.o                    g++ -Wall -g  main.o test.o -o main   可以写成:            main:main.o test.o                    g++ -Wall -g  main.o test.o -o $@    $< : 规则的第一个依赖文件名   例如:main.o: main.cpp        …
Makefile描述整个程序的编译.链接规则 其中还包括了工程中用到的那些源文件及需要产生的目标文件 1)Makefile编程规则 目标(唯一):依赖(可多个) 命令... 伪目标 .PHONY:clean //声明clean命令为伪目标 clean: rm -f *.o led.elf led.dis //命令,删除所列出的中间文件 2)用变量代替连续出现的东西 3)默认变量 $@ : 代表目标 $^   : 代表所有依赖  $<   : 代表第一个依赖 例子: all:led.bin //最…
代码: CXX := g++ CFLAGS := -g TARGET := xxx.exe SRCS := $(wildcard *.cpp) OBJS := $(patsubst %cpp,%o,$(SRCS)) all:$(TARGET) %.o:%.cpp     $(CXX) $(CFLAGS) -c $< $(TARGET):$(OBJS)     $(CXX) $(CFLAGS) -o $@ $^ clean:     rm -rf $(TARGET) *.o 操作: make xx…
一个规则的构成 目标:依赖1,依赖2······ 命令 例子: objs := init.o nand.o head.o main.o nand.bin : $(objs) arm-linux-ld -Tnand.lds -o nand_elf $^ arm-linux-objcopy -O binary -S nand_elf $@ arm-linux-objdump -D -m arm nand_elf > nand.dis %.o:%.c arm-linux-gcc -Wall -c -O…
all: osx .PHONY: osx linux run osx: kale.dylib linux : kale.so run: kale.bin CC = gcc OBJECTS = $(patsubst %.c,%.o,$(wildcard *.c)) $(OBJECTS): base64.h kale.dylib: $(OBJECTS) $(CC) -dynamiclib -undefined suppress -flat_namespace -Wall $^ -o $@ kale.…
注意事项 每个标签分支前都不能用空格,必须用tab 标签外调用bash命令用 $(shell -),标签内可以正常使用 标签后可以指定其他标签,执行顺序是先执行其他标签,而后在执行自己 比如 all: clean 会先执行clean make 没有参数时,默认会执行第一个标签 比如demo里会执行make all demo target=errno CC:=gcc all: clean $(CC) -Wall -s -o $(target) *.c install: all cp -f $(ta…
前言 在C语言中,我们需要将源代码生成可执行的程序.这里面其实要经过非常多的步骤.参看下图: 这中间主要通过make命令,读取一种名为“makefile”或“Makefile”的文件来实现软件的自动化建构.它会通过一种被称之为“target”概念来检查相关文件之间的依赖关系,这种依赖关系的检查系统非常简单,主要通过对比文件的修改时间来实现. 使用      比如我们有一个test.c的文件需要编译链接成可执行程序test.可以这样写makefile文档. CC = gcc #类似于c语言中的宏定…
陈皓 (CSDN) 概述—— 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力. 因为,makefile…
简单的makefile 为了说明问题,就新建一组文件如下: 文件布局及运行结果: make clean 按目录归置 文件看起来是是清楚了,但是makefile写得揪心. 实用版 (1)Makefile中的 符号 $@, $^, $< 的意思: $@  表示目标文件 $^  表示所有的依赖文件 $<  表示第一个依赖文件 $?  表示比目标还要新的依赖文件列表 (2)wildcard.notdir.patsubst的意思: wildcard : 扩展通配符 notdir : 去除路径 patsu…
Makefile cmd: - g++ 相信在linux下编程的没有不知道makefile的,刚开始学习linux平台下的东西,了解了下makefile的制作,觉得有点东西可以记录下. 下面是一个极其简单的例子:现在我要编译一个Hello world,需要如下三个文件:1. print.h #include<stdio.h> void printhello(); 2. print.c #include"print.h" void printhello() { printf(…
什么是makefile呢? 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令. 接下来用几个简单的小例子为大家介绍简单的makefile使用 例子1: main: main.c gcc main.c -o main 其中,main为目标生成文件,main.c为依赖文件 例子…
1.1在这之前,我们需要了解程序的编译过程 a.预处理:检查语法错误,展开宏,包含头文件等 b.编译:*.c-->*.S c.汇编:*.S-->*.o d.链接:.o +库文件=*.exe 1.2体验在VC下程序的编译 a.先编译,在链接 b.修改了哪个文件,就单独编译此文件,在链接 c.修改了哪个头文件,就单独编译使用该头文件的源文件,在链接 1.3在linux下实现上述要求 2.编写一个测试的Makefile 2.1直接编译链接 gcc -o test a.c b.c 缺点:改变其中一个文…
跟我一起写 Makefile 陈皓 第一章.概述 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional(专业)的程序员,makefile还是要懂.这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要 了解HTML的标识的含义.特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具 备完成大型工…
From: http://blog.csdn.net/liang13664759/article/details/1771246 最近在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>的makefile一章所讲述的惊人的相似,只是这篇文章从一个实例切入,在有些地方比较好理解.能让…
程序的 编译 和 链接 要先总结 make 和 makefile,就需要先了解下面这个过程: 预编译:也叫预处理,进行一些文本替换工作,比如将 #define 定义的内容,在代码中进行替换: 编译:将预处理得到的代码,进行词法分析.语法分析.中间代码……:如果是在Windows下,中间代码就是 .obj 文件:在Linux系统下,中间代码就是 .o 文件: 汇编:将编译得到的汇编代码,通过汇编程序得到 0 和 1 机器语言: 链接:链接各种静态链接库和动态链接库得到可执行文件. make 和 m…