新手学习记录2:makefile学习实践--自定义变量的引入
2016-03-21 09:44
447 查看
makefile中的宏定义
makefile程序的一开始进行变量的宏定义,在编写编译程序的时候在进行变量的引用.
变量的定义和赋值的方法,如下:
EXE = file1.o file2.o
CC = gcc
变量的引用
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) -c hello1.c
运行make后显示:
gcc -c hello.c
gcc -c hello1.c
gcc hello.o hello1.o -o main
./main看结果.
进一步改进,引入自定义变量
EXE=hello.o hello1.o
CC=gcc
CFLAGS = -Wall -O -g
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) $(CFLAGS) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) $(CFLAGS) -c hello1.c
make后结果显示:
melody@melody-G41D3:~/make3$ make
gcc -Wall -O -g -c hello.c
gcc -Wall -O -g -c hello1.c
gcc hello.o hello1.o -o main
melody@melody-G41D3:~/make3$ ./main
myprint 1!
到此为止,自定义变量的引入已经正常.
gcc 参数的意义:
-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他将生成.o的obj文件
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
-g
只是编译器,在编译的时候,产生调试信息。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
-E 只运行 C 预编译器。
makefile程序的一开始进行变量的宏定义,在编写编译程序的时候在进行变量的引用.
变量的定义和赋值的方法,如下:
EXE = file1.o file2.o
CC = gcc
变量的引用
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) -c hello1.c
运行make后显示:
gcc -c hello.c
gcc -c hello1.c
gcc hello.o hello1.o -o main
./main看结果.
进一步改进,引入自定义变量
EXE=hello.o hello1.o
CC=gcc
CFLAGS = -Wall -O -g
main:$(EXE)
$(CC) $(EXE) -o main
hello.o:hello.c hello1.h
$(CC) $(CFLAGS) -c hello.c
hello1.o:hello1.c hello1.h
$(CC) $(CFLAGS) -c hello1.c
make后结果显示:
melody@melody-G41D3:~/make3$ make
gcc -Wall -O -g -c hello.c
gcc -Wall -O -g -c hello1.c
gcc hello.o hello1.o -o main
melody@melody-G41D3:~/make3$ ./main
myprint 1!
到此为止,自定义变量的引入已经正常.
gcc 参数的意义:
-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他将生成.o的obj文件
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
-g
只是编译器,在编译的时候,产生调试信息。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
-E 只运行 C 预编译器。
相关文章推荐
- ERROR manager.SqlManager: Error reading from database: java.sql.SQLException: Streaming result set
- Maven项目部署方案
- HDFS小文件处理——Mapper处理
- 想吃鱼
- 3.1.Android控件架构与自定义控件详解之控件架构
- linux命令——cut
- BZOJ 1898: [Zjoi2005]Swamp 沼泽鳄鱼
- SQL:基础查阅手册
- React富含交互性的动态页面
- String操作符
- Python 练习------文件属性,Json数据
- BeanFactory和FactoryBean
- Sublime 究极技巧4 - 构建Python,php运行及调试环境
- 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- SAP新总账下的利润中心内部转移定价
- JavaScript笔记2--Function.prototype.bind动态绑定函数
- 深入理解JSX
- java——多线程
- 安卓学习之路---day1
- 手把手教你用Spring Cloud和Docker构建微服务