须要注意的是,制做操做系统权限全程都要用 root操作系统
为了方便目录管理,因此出现了这种两个命令,他们的原理就是利用堆栈来实现目录管理。code
这两个命令,pushd 负责将指定的目录压入堆栈,语法以下编译
pushd 你想要压入堆栈的命令
popd 负责将压入堆栈的目录弹出去,使用的后进先出的原则。基础
通常 Linux 的源代码的编译安装等都须要进行配置,这个配置的做用就是检测当前的运行环境是怎样的,究竟适合开启软件的什么功能。原理
而且你能够在配置的时候,指定你须要的配置选项,好比说要不要编译静态库之类的。软件
配置的过程通常是使用软件包目录中的 configure 文件来进行的,而后添加参数来进行功能或者选项的设置。配置
例如:file
./configure --prefix=/tools --enable-shared 这里的 prefix 是指定编译生成的文件的目录在哪里
make 这个命令是根据 makefile 来自动执行一些操做。权限
在通过正确的配置过程后,通常就会生辰惯用语编译和安装使用的 Makefile 文件了,make 命令能够经过该文件来进行源代码的编译和安装等操做。语法
通常的编译过程使用 amke 命令就能够完成了,命令以下:
make
而通常的安装过程经过以下的命令来进行:
make install
其中 install 是存在于 Makefile 中的一个标记,make 命令能够根据这个标记中所设置的流程化内容来进行处理。
编译过程,虽然没有任何的指定标记,可是实际上 make 命令会从 Makefile 中查找 all 标记,而且根据该标记的流程来进行处理。
在 Makefile 中能够有不少的标记,不一样的标记能够设置一组操做流程,经过 make 自带的参数就能够去执行这些操做,所以 Makefile 的做用不止是局限于编译软件包,不少流程化的工做都是可使用 Makefile 配合 make 命令来完成的,可是通常 make 命令用于软件包的编译安装工做。
虽然同一个标记在不一样的软件包中的含义是不同的,可是通常仍是有约定俗称的流程标记。
并非全部的软件包都须要编译过程,软件包的安装过程也可能只须要复制命令就好了,相似 mac bundle。
有两种方法,一种是使用命令
echo $? 若是返回的是 0 就表示正确,若是是非零就表示错误。
另一种是观察。
当你用 make 命令编译的时候,若是发现输出的一堆文字里,有 error 字样,就说明 make 失败了。
2> 这个表明将错误输出流。
&1 表明正确输出流
2>&1 表明将错误输出流,合并正确输出流,也就是说,正确输出和错误输出都有了,信息完整。
由于默认状况下,具体的错误信息输出是不会显示出来的。
经过指定 make 安装的目录来进行指定,只要你将全部的安装文件都安装到制定的目录中,这样只要看一下这个目录就能够知道这个软件包所安装的文件了。
也就是利用 make 的一个参数「DESTDIR」,该参数在 make install 中进行制定。
DESTDIR 一直是被默认实用的,若是不专门制定,DESTDIR 被定义为空,不会影响实际的安装路径,好比制定某个软件包的 prefix 参数为 /usr 那么通常状况下 make install 是将文件以 /usr 为基础目录来进行安装的,而实际上安装的目录是以 ${DESTDIR}${prefix} 这样的形式来处理的。
若是 DESTDIR 没有制定,那么就等因而 ${prefix} 因此就安装到了 /usr 目录下了,若是 DESTDIR 被指定为非空的目录,那么安装程序就把文件安装在这个目录下的 ${prefix} 也就是默认的 /usr 目录下。
有些会使用 ROOT 还有写软件包会使用 PREFIX 来制定,因此你若是要指定目录的话,必定要查看软件包中的说明文件来了解一下,也能够只直接查看 Makefile 是否认义了 DESTDIR 活着其余几个常见的目录制定参数来判断是否支持制定目录安装。