今天在安装redis的时候发现官方的文档上没有说要执行make install,直接cd 到src 目录里面执行redis-server
文件就能启动。
而看很多别人的笔记呢,则都写了make install
,发现实际就是把src目录下的几个二进制文件复制到了系统的/usr/local/bin
下面了而已。
查了下似乎是说make install
执行的是Makefile
里面的脚本。
实际的作用也就是上面说的复制二进制文件么?
只是以redis的安装为例,主要是问安装程序时候的make install
make install
(对make
命令来说)字面意思就是达成install
这个目标。这个目标既然叫install
,当然是执行软件的安装了。类 UNIX 系统中,软件的安装通常可选地包含以下步骤:
strip
去掉二进制代码文件中不需要的符号类 UNIX 系统的软件,有些不需要安装,执行可执行文件就可以直接用了。有些则不是这样,比如软件需要的配置文件、资源文件没有复制到相应的位置,包括动态链接库的软件需要更新动态链接库缓存否则会因为找不到刚刚编译出来的动态链接库而出错,等等。
摘自官方README:
同样,
摘抄自https://github.com/antirez/redis/blob/3.0/Makefile
不过这个只是去执行src目录下面的
make install
。看了那个src/文件夹下的Makefile,就是对许多东西(请允许我不一一列举),以/usr/local/bin为目录参数(默认情况)执行
install
命令。备注: make后面加一个参数,一般是执行Makefile中的某个目标。比如
make install
就是执行Makefile中install:
就是执行Makefile中install:
下面的一组命令。那么
install
命令是什么呢?man install
命令是什么呢?man install
一下,你就知道: