linux Ubuntu之make:make命令行工具的简介、安装、使用方法之详细攻略
Ubuntu之make:make命令行工具的简介、安装、使用方法之详细攻略
目录
make命令行工具的简介
make命令行工具的安装
make命令行工具的使用方法
make命令行工具的简介
1、查看make版本,在浏览器搜索:ftp://ftp.gnu.org/gnu/make/ 可进入下载页面
3、下载安装包:wget http://ftp.gnu.org/gnu/make/make-3.81.tar.gz
4、解压压缩包:tar -zvxf make-3.81.tar.gz
6、系统配置make:./configure --prefix=/usr/local/make-3.81
这里加上sudo是因为这一步会将编译好的make 3.81版本的文件转移到/usr/local/make-3.81目录下,这个目录只有root有权限写入。因此需要sudo权限
make命令行工具的安装
先更新找到ubuntu-make,再下载
sudo apt-get update
sudo apt-get install ubuntu-make
190727更新
sudo apt-get install make
make命令行工具的使用方法
1、Make命令参数的典型序列如下所示
make [-f makefile文件名][选项][宏定义][目标] #这里用[]括起来的表示是可选的。命令行选项由破折号“–”指明,后面跟选项
2、 一个简单的例子
为了编译整个工程,你可以简单的使用 make 或者在 make 命令后带上目标 all。
$ make
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test
你能看到 make 命令第一次创建的依赖以及实际的目标。
如果你再次查看目录内容,里面多了一些 .o 文件和执行文件:
$ ls
anotherTest.c anotherTest.o Makefile test test.c test.h test.o
现在,假设你对 test.c 文件做了一些修改,重新使用 make 编译工程:
$ make
gcc -c -Wall test.c
gcc -Wall test.o anotherTest.o -o test
你可以看到只有 test.o 重新编译了,然而另一个 Test.o 没有重新编译。
现在清理所有的目标文件和可执行文件 test,你可以使用目标 clean:
$ make clean
rm -rf *.o test
$ ls
anotherTest.c Makefile test.c test.h
你可以看到所有的 .o 文件和执行文件 test 都被删除了。
3. 通过 -B 选项让所有目标总是重新建立
到目前为止,你可能注意到 make 命令不会编译那些自从上次编译之后就没有更改的文件,但是,如果你想覆盖 make 这种默认的行为,你可以使用 -B 选项。下面是个例子:
$ make
make: Nothing to be done for `all'.
$ make -B
gcc -c -Wall test.c
gcc -c -Wall anotherTest.c
gcc -Wall test.o anotherTest.o -o test
你可以看到尽管 make 命令不会编译任何文件,然而 make -B 会强制编译所有的目标文件以及最终的执行文件。
3. 使用 -d 选项打印调试信息
如果你想知道 make 执行时实际做了什么,使用 -d 选项。这是一个例子:
$ make -d | more
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-pc-linux-gnu
Reading makefiles…
Reading makefile `Makefile'…
Updating makefiles….
Considering target file `Makefile'.
Looking for an implicit rule for `Makefile'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.o'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.c'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.cc'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.C'.
Trying pattern rule with stem `Makefile'.
Trying implicit prerequisite `Makefile.cpp'.
Trying pattern rule with stem `Makefile'.
--More--
这是很长的输出,你也看到我使用了 more 命令来一页一页显示输出。
4. 使用 -C 选项改变目录
你可以为 make 命令提供不同的目录路径,在寻找 Makefile 之前会切换目录的。这是一个目录,假设你就在当前目录下:
$ ls
file file2 frnd frnd1.cpp log1.txt log3.txt log5.txt
file1 file name with spaces frnd1 frnd.cpp log2.txt log4.txt
但是你想运行的 make 命令的 Makefile 文件保存在 ../make-dir/ 目录下,你可以这样做:
$ make -C ../make-dir/
make: Entering directory `/home/himanshu/practice/make-dir'
make: Nothing to be done for `all'.
make: Leaving directory `/home/himanshu/practice/make-dir
你能看到 make 命令首先切到特定的目录下,在那执行,然后再切换回来。
5. 通过 -f 选项将其它文件看作 Makefile
如果你想将重命名 Makefile 文件,比如取名为 my_makefile 或者其它的名字,我们想让 make 将它也当成 Makefile,可以使用 -f 选项。
make -f my_makefile
通过这种方法,make 命令会选择扫描 my_makefile 来代替 Makefile。
linux Ubuntu之make:make命令行工具的简介、安装、使用方法之详细攻略相关推荐
- Python语言学习之常见语句命令那些事:python和常见语句命令(条件语句、pass语句)使用方法之详细攻略
Python语言学习之常见语句命令那些事:python和常见语句命令(条件语句.pass语句)使用方法之详细攻略 目录 Python常见语句命令 1.python的条件语句 2.Python之pass ...
- linux终端命令make,Ubuntu之make:make命令行工具的简介、安装、使用方法之详细攻略...
Ubuntu之make:make命令行工具的简介.安装.使用方法之详细攻略 目录 make命令行工具的简介 make命令行工具的安装 make命令行工具的使用方法 make命令行工具的简介 Ubunt ...
- Ubuntu之make:make命令行工具的简介、安装、使用方法之详细攻略
Ubuntu之make:make命令行工具的简介.安装.使用方法之详细攻略 目录 make命令行工具的简介 make命令行工具的安装 make命令行工具的使用方法 make命令行工具的简介 Ubunt ...
- linux gpu 测试工具,推荐 7 大 Linux GPU 监控和诊断命令行工具
原标题:推荐 7 大 Linux GPU 监控和诊断命令行工具 作者:Linux迷 链接:https://www.linuxmi.com/7-linux-gpu-jiankong.html 视频卡是一 ...
- linux下的安装命令行工具下载,本地安装DEB包的3种命令行工具(适合Debian体系)
1. 前言 在本教程中,我们将学习如何使用三种不同的命令行工具(dpkg.apt和gdebi)在Debian及其衍生产品(如Ubuntu和Linux Mint)中安装本地软件包(. deb). 这对那 ...
- Python命令行解析:sys.argv[]函数的简介、案例应用之详细攻略
Python命令行解析:sys.argv[]函数的简介.案例应用之详细攻略 目录 sys.argv[]函数的简介 sys.argv[]函数的案例应用 1.基础测试 2.进阶用法 3.sys.argv[ ...
- TF之TF flags:TF flags(命令行解析)的简介、安装、使用方法之详细攻略
TF之TF flags:TF flags(命令行解析)的简介.安装.使用方法之详细攻略 目录 TF flags的简介 TF flags的安装 TF flags的使用方法 TF flags的简介 1.f ...
- Py之argparse:Python库之argparse(命令行解析)简介、安装、使用方法之详细攻略
Py之argparse:Python库之argparse(命令行解析)简介.安装.使用方法之详细攻略 导读 python中的命令行解析最简单最原始的方法是使用sys.argv来实现,更高级的可以使用a ...
- WSL:WSL(Windows Subsystem for Linux)的简介、安装、使用方法之详细攻略
WSL:WSL(Windows Subsystem for Linux)的简介.安装.使用方法之详细攻略 目录 WSL的简介 WSL的安装 WSL的使用方法 WSL的简介 Windows Subsys ...
最新文章
- NLP分词数据准备及模型训练实例
- 近期活动盘点:清华严飞大数据探寻中国文脉讲座、2019前沿信息科技创新论坛...
- 安装keras and theano于google colab上
- *dev=filp-private_data;这一句的理解
- 如何判断一个SAP CRM UI能否被扩展
- jquery 统计统计子标签的个数
- shiro学习(22):动态添加验证规则2
- cnetos7 mysql5.6 utf8设置_CentOS7下安装MySQL 5.6修改字符集为utf8并开放端口允许远程访问...
- (119)System Verilog 父类与子类对象复制(自定义函数)详解
- python语言程序的特点_《Python语言程序设计》 —1.1.3 Python的特点及应用领域...
- 2017 ACM暑期多校联合训练 - Team 3 1008 HDU 6063 RXD and math (莫比乌斯函数)...
- 机器视觉:嵌入式视觉系统中的接口
- UVa11809-Floating-Point Numbers
- MonkeyDevice Class
- 从零基础入门Tensorflow2.0 ----九、44.4 签名函数转换成savedmodel
- 人事管理系统(毕业设计)
- idea 破解版安装
- 大年三十问候导师的后果
- java word 水印_java操作word水印
- 面试题(19)今日头条Java后台研发三面题目
热门文章
- 冬季使用笔记本电脑五大禁忌
- DongTai 被动型IAST工具
- eclipse文件到idea乱码问题
- 棋盘覆盖问题 java_Java棋盘覆盖问题
- Panasonic Programming Contest 2020 E.Three Substrings
- Collapsing margins(外边距合并)
- C++ Error C2280 尝试引用已删除的函数(二)因std::mutex引起的拷贝
- Linux搭建测试环境(一)_JDK的安装
- iphone6s gpu Android,苹果iPhone6s GPU跑分出炉:性能翻倍
- 视觉惯性单目SLAM (三)优化方法