linux下的make
来源:互联网 发布:织梦门户网站模板源码 编辑:程序博客网 时间:2024/06/06 00:50
在Linux下写写简单的程序可以使用gcc/g++进行编译,若涉及的.c文件太多,则使用起来太麻烦,容易出错,且灵活性不高。
如:涉及文件有hello.c add.c等等
编译:gcc -o hello hello.c(未包含add.c文件)
gcc -o hello.o -c hello.c
gcc -o add.o -c add.c
gcc -o hello hello.o add.o(才可)
只是多了一个add.c文件,要是包含更多.c文件光是写命令就要耗费大量的时间。开发效率及其的低。
make 是一种能够控制编译或者重复编译软件的工具。
makefile是一个文本形式的脚本文件,其中包含一些规则告诉make编译哪些文件,怎样编译以及在什么条件下编译。
makefile规则遵循以下通用形式
target:dependency[dependency[...]]
command
command
......
每一个command的第一字符前面必须加上tab键。
举例说明:
最简单的形式
vi makefile
strat:hello.o
gcc -o hello hello.o
hello.o:
gcc -o hello.o hello.c
解析:start代表标号,hello.o代表依赖项,执行第一个标号,看是否有依赖项,若有则寻找此依赖项的标号,找到后即执行命令语句。(命令行输入make即可)
进一步完善makefile文件
start:hello.o
gcc -o hello hello.o
@echo '----------ok-----------'
hello.o
gcc -o hello.o hello.c
clean:
rm -f hello.o
解析:多加一个标号,可以通过命令行输入make clean,再调用此命令行。增加了@echo显示编译成功语句,为了将语句本身输出,加上@符号可以不输出命令。
更简单的使用makefile
在makefile中使用变量通过替换依赖项来完成。把变量用括号括起来,前面加上$就可以引用该变量的值,如$(varname),按习惯makefile的变量都是大写。
如:
CC = gcc
SRCS = hello.c
OBJS = hello.o
EXEC = hello
start:$(OBJS)
$(CC) -o $(EXEC) $(OBJS)
OBJS:
$(CC) -o $(OBJS) -c $(SRCS)
clean:
rm -f $(OBJS)
通过使用.SUFFIXES:.c .o(告诉make代表.c和.o之间有关系)若写的是.CPP文件时,应在将.c换成.cpp
如:
OBJS = $(>SUFFIXES:.c = .o)
$@ 常规的目标所对应的文件名(依赖项)
$< 规则中的第一个相关的文件名(被依赖项)
如:
.SUFFIXES:.c .o 若写的是.CPP文件时,应在将.c换成.cpp
CC = gcc
SRCS = hello.c
OBJS = $(SRCS:.c = .o) 若写的是.CPP文件时,应在将.c换成.cpp
EXEC = hello
start:$(OBJS)
$(CC) -o $(EXEC) $(OBJS)
.c.o: 若写的是.CPP文件时,应在将.c换成.cpp
$(CC) -o $@ -c $<
clean:
rm -f $(OBJS)
在makefile文件中同时编译多和源文件
如:hello.c add.c
即:
.SUFFIXES:.c .o 若写的是.CPP文件时,应在将.c换成.cpp
CC = gcc
SRCS = hello.c\
add.c
OBJS = $(SRCS:.c = .o) 若写的是.CPP文件时,应在将.c换成.cpp
EXEC = hello
start:$(OBJS)
$(CC) -o $(EXEC) $(OBJS) @echo '----------ok-----------'
-c.o: 若写的是.CPP文件时,应在将.c换成.cpp
$(CC) -o $@ -c $<
clean:
rm -f $(OBJS)
- linux下的make
- linux下的make
- Linux下make的运行
- linux下的make命令
- linux下make的问题
- Linux 下的make命令
- 理顺下 linux下configure,make,make install的意义
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用 .
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- Linux下 config/configure/Configure、make 、make test/make check、sudo make install 的作用
- linux下configure,make,make install的意义
- linux下 configure,make,make install的意义
- linux 系统下make 与 make install 之间的区别
- linux下configure,make,make install的意义
- 计算两向量的欧式距离,余弦相似度
- PLSQL程序设计(访问oracle数据库效率最高的语言)
- 进程间通讯---匿名管道
- java多线程问题总结
- Android icon图标网站
- linux下的make
- 安卓学习的资料
- 【教程】用微PE在UEFI+GPT模式下安装WIN7、WIN10
- python做量化交易干货分享
- mysql 设置两个主键
- css一些坑的地方
- 列出连通集——DFS+BFS
- 多帐套,多组织 登录系统设计
- hbase1.3.0学习笔记