make install
现在软件已经被构建好并且可以执行,接下来要做的就是将可执行文件复制到最终的路径。
make install 命令就是将可执行文件、第三方依赖包和文档复制到正确的路径。
这通常意味着,可执行文件被复制到某个 PATH 包含的路径,
程序的调用文档被复制到某个 MANPATH 包含的路径,
还有程序依赖的文件也会被存放在合适的路径。
因为安装这一步也是被定义在 Makefile 中,所以程序安装的路径可以通过 configure 命令的参数指定,或者 configure 通过系统参数决定。
如果要将可执行文件安装在系统路径,执行这步需要赋予相应的权限,一般是通过 sudo。
https://superuser.com/questions/360178/what-does-make-install-do
When you do "make install", the make program takes the binaries from the previous step and copies them into some appropriate locations so that they can be accessed.
Unlike on Windows, installation just requires copying some libraries and executables and there is no registry requirement as such.
In short, "make install" just copies compiled files into appropriate locations.
Using bin_PROGRAMS program, make install puts binary files in /usr/local/bin.
When installing linux system, all executable files the system can run will be put in /usr/bin.
All the user installed executables will be put in /usr/local/bin by command 'make install'
https://stackoverflow.com/questions/528399/what-should-linux-unix-make-install-consist-of
Installation
A less trivial installer will copy several things into place, first insuring that the appropriate paths exists (using mkdir -p or similar). Typically something like this:
• the executable goes in $INSTALL_PATH/bin
• any libraries built for external consumption go in $INSTALL_PATH/lib or $INSTALL_PATH/lib/yourappname
• man pages go in $INSTALL_PATH/share/man/man1 and possibly other sections if appropriate
• other docs go in $INSTALL_PATH/share/yourappname
• default configuration files go in $INSTALL_PATH/etc/yourappname
• headers for other to link against go in $INSTALL_PATH/include/yourappname
Installation path
The INSTALL_PATH is an input to the build system, and usually defaults to /usr/local. This gives your user the flexibility to install under their $HOME without needing elevated permission.
In the simplest case just use
INSTALL_PATH?=/usr/local
at the top of the makefile. Then the user can override it by setting an environment variable in their shell.
Deinstallation
You also occasionally see make installs that build a manifest to help with de-installation. The manifest can even be written as a script to do the work.
Another approach is just to have a make uninstall that looks for the things make install places, and removes them if they exist.
It's also important that 'make install' should be the only step that requires root permission.
The installation of kernel modules is a very different thing from installing a program .
In the simplest case you just copy the newly created executable into the /usr/local/bin path. Of course, it's usually more complicated than that.
Notice that most of these operations require special rights, which is why make install is usually invoked using sudo.
Not all Makefiles have a make install