linuxmake
A. linux下的make是什么,它是不是调用另外的编译器
在 Unix 上写程式的人大概都碰过 Makefile,尤其是用 C 来开发程序的人。用 make来开发和编译程式的确很方便,可是要写出一个 Makefile就不简单了。偏偏介绍 Makefile 的文件不多,GNU Make 那份印出来要几百页的文件,光看完 Overview 就快阵亡了,难怪许多
人闻 Unix 色变。
本文将介绍如何利用 GNU Autoconf 及 Automake 这两套软体来协助我们‘自动’产生 Makefile 档,并且让开发出来的软体可以像 Apache, MySQL 和常见的 GNU 软体一样,只要会 ``./configure'', ``make'', ``make install'' 就可以把程式安装到系统中。如果您有
心开发 Open Source 的软体,或只是想在 Unix 系统下写写程式。希望这份介绍文件能帮助您轻松地进入 Unix Programming 的殿堂。
1. 简介
Makefile 基本上就是‘目标’(target), ‘关连’(dependencies) 和‘动作’三者所组成的一连串规则。而 make 就会根据 Makefile 的规则来决定如何编译 (compile) 和连结 (link) 程式。实际上,make 可做的不只是编译和连结程式,例如 FreeBSD 的 port collect
ion 中, Makefile 还可以做到自动下载原始程式套件,解压缩 (extract) ,修补 (patch),设定,然后编译,安装至系统中。
Makefile 基本构造虽然简单,但是妥善运用这些规则就也可以变出许多不同的花招。却也因此,许多刚开始学习写 Makefile 时会感到没有规范可循,每个人写出来的 Makefile 长得都不太一样,不知道从何下手,而且常常会受限于自己的开发环境,只要环境变数不同或路
径改一下,可能Makefile 就得跟着修改。虽然有 GNU Makefile Conventions (GNU Makefile 惯例) 订出一些使用 GNU 程式设计时撰写 Makefile 的一些标准和规范,但是内容很长而且很复杂, 并且经常做些调整,为了减轻程式设计师维护 Makefile 的负担,因此有了Automake。
程式设计师只需写一些预先定义好的巨集 (macro),交给 Automake 处理后会产生一个可供Autoconf 使用的 Makefile.in 档。再配合利用Autoconf 产生的自动设定档 configure即可产生一份符合 GNU Makefile惯例的 Makeifle 了。
详细内容看这里
B. linux下的make命令怎么没用
是因为linux中没有安装g++编译器,只需安装即可解决。具体操作步骤如下:
1、首先在Linux下按下“Alt + Ctrl + t”键,弹出窗口。然后输入“stdo -i",单击回车。
C. Linux中make, make install命令分别是什么,用法
make是用来编译的,它从Makefile中读取指令,然后编译。
make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
用法:
1、make:
这一步就是编译,大多数的源代码包都经过这一步进行编译(当然有些perl或python编写的软件需要调用perl或python来进行编译)。
如果 在 make 过程中出现 error ,就要记下错误代码(注意不仅仅是最后一行),然后可以向开发者提交 bugreport(一般在 INSTALL 里有提交地址)。
或者系统少了一些依赖库等,这些需要自己仔细研究错误代码。
make 的作用是开始进行源代码编译,以及一些功能的提供,这些功能由他的 Makefile 设置文件提供相关的功能。
比如 make install 一般表示进行安装,make uninstall 是卸载,不加参数就是默认的进行源代码编译。
make 是 Linux 开发套件里面自动化编译的一个控制程序,他通过借助 Makefile 里面编写的编译规范进行自动化的调用 gcc 、ld 以及运行某些需要的程序进行编译的程序。
一般情况下,他所使用的 Makefile 控制代码,由 configure 这个设置脚本根据给定的参数和系统环境生成。
2、make install
这条命令来进行安装(当然有些软件需要先运行 make check 或 make test来进行一些测试),这一步一般需要你有 root 权限(因为要向系统写入文件)。
(3)linuxmake扩展阅读
当我们在使用make命令时,常常会在make后面加上其他单词,比如check,install,installcheck…这些单词都是make的参数,我们称之为“目标(targets)”。
最常见的几个目标:
make all:编译程序、库、文档等(等同于make)
make install:安装已经编译好的程序。复制文件树中到文件到指定的位置
make unistall:卸载已经安装的程序。
make clean:删除由make命令产生的文件
make distclean:删除由./configure产生的文件
make check:测试刚刚编译的软件(某些程序可能不支持)
make installcheck:检查安装的库和程序(某些程序可能不支持)
make dist:重新打包成packname-version.tar.gz
D. make是linux的自带的还是需要安装编译器才有make功能
make程序不是Linux系统自带的,也不是编译器带的,不要按照IDE的概念去理解(Windows下面的IDE一安装什么工具都有了),make工具是需要另外安装的。
比如说我的Linux系统上,当时搭建开发环境时是这样安装的:(我的系统是Fedora,所以用的yum)
yum install make gcc gcc-c++
看,编译器和make是分开安装的哈。
make工具是需要makefile的时候才用,而makefile是多个源文件的时候才有,如果你编译一个helloworld程序,直接用gcc或g++编译就可以了,从这点来看,也没理由把make和编译器捆绑在一起。
E. linux make命令什么意思
Make的概念:
Make这个词,英语的意思是"制作"。Make命令直接用了这个意思,就是要做出某个文件。比如,要做出文件a.txt,就可以执行下面的命令。
代码如下:
$ make a.txt
但是,如果你真的输入这条命令,它并不会起作用。因为Make命令本身并不知道,如何做出a.txt,需要有人告诉它,如何调用其他命令完成这个目标。
比如,假设文件 a.txt 依赖于 b.txt 和 c.txt ,是后面两个文件连接(cat命令)的产物。那么,make 需要知道下面的规则。
代码如下:
a.txt: b.txt c.txt
cat b.txt c.txt > a.txt
也就是说,make a.txt 这条命令的背后,实际上分成两步:第一步,确认 b.txt 和 c.txt 必须已经存在,第二步使用 cat 命令 将这个两个文件合并,输出为新文件。
像这样的规则,都写在一个叫做Makefile的文件中,Make命令依赖这个文件进行构建。Makefile文件也可以写为makefile, 或者用命令行参数指定为其他文件名。
代码如下:
$ make -f rules.txt
# 或者
$ make --file=rules.txt
上面代码指定make命令依据rules.txt文件中的规则,进行构建。
总之,make只是一个根据指定的Shell命令进行构建的工具。它的规则很简单,你规定要构建哪个文件、它依赖哪些源文件,当那些文件有变动时,如何重新构建它。
F. linux 在哪个目录 make make install
make的当然是在源代码文件的目录,因为make命令执行的,其实是一个名为makefile,或者是名为Makefile(Linux是大小写敏感的)的文件里的内容,这个文件就是你下载的源代码压缩包,解压后的目录里面的,和代码文件位于同一个目录。
而make install执行的其实是Makefile里面的,一个名为“install”的“目标”(“目标”是Makefile里面的一个概念),这个“目标”后面跟的是一段命令,可以理解为“目标”后跟了一段shell脚本,这段命令执行的就是把make好的程序安装到系统的操作。如果你要看看具体install到了那个目录,可以查看这个Makefile文件的内容,看看install这个“目标”中定义的安装目录的宏(“宏”也是Makefile中的一个概念),宏是全部大写的变量,这个宏类似于$(INSTDIR)这种字样。
G. 在linux中执行make之后,终端显示的make[1]之后又有make[2]还有make[3]之类的,这是什么意思
这个应该是make的依赖层次吧,make[1]指的是当前make的对象距离最初make的目标对象有1层依赖关系,make[2]指的是当前make的对象距离最初make的目标对象有2层依赖关系,距离某个make[1]目标对象有1层依赖关系,以此类推。
这个层次的问题基本可以无视,你要关心的是有没有出现error或者warning
H. Linux里面make和make install区别是什么
make是进行编译,结果文件还是在本目录下,make install是安装到指定目录,这样后续使用程序到安装目录才可以,当然这些起始都是makefile文件里的配置
I. linux下如何查看make的版本, 即$(MAKE_VERSION)
如果是在 shell 中查看,那么直接 make -v 即可。
如果是在 makefile 中获取,则用 $(MAKE_VERSION), 比如下面的makefile
.PHONY: all
all:
echo "VERSION is $(MAKE_VERSION)"
然后在包含此makefile的目录下 make,就会看到相应的打印了。
注意, MAKE_VERSION 是 makefile 中的一个自带变量,不是shell环境变量,所以不能在 shell 下直接 用 $MAKE_VERSION