zoukankan      html  css  js  c++  java
  • 《手把手教你构建自己的 Linux 系统》学习笔记(3)

    需要注意的是,制作操作系统权限全程都要用 root

    pushd 和 popd

    为了方便目录管理,所以出现了这种两个命令,他们的原理就是利用堆栈来实现目录管理。

    这两个命令,pushd 负责将指定的目录压入堆栈,语法如下

    pushd 你想要压入堆栈的命令
    

    popd 负责将压入堆栈的目录弹出去,使用的后进先出的原则。

    如何利用 configure 文件来进行配置?

    一般 Linux 的源代码的编译安装等都需要进行配置,这个配置的作用就是检测当前的运行环境是怎样的,究竟适合开启软件的什么功能。

    并且你可以在配置的时候,指定你需要的配置选项,比如说要不要编译静态库之类的。

    配置的过程一般是使用软件包目录中的 configure 文件来进行的,然后添加参数来进行功能或者选项的设置。

    例如:

    ./configure --prefix=/tools --enable-shared
    
    这里的 prefix 是指定编译生成的文件的目录在哪里
    

    配置文件的参数

    make 和 makefile

    make 这个命令是根据 makefile 来自动执行一些操作。

    在经过正确的配置过程后,一般就会生辰惯用语编译和安装使用的 Makefile 文件了,make 命令可以通过该文件来进行源代码的编译和安装等操作。

    一般的编译过程使用 amke 命令就可以完成了,命令如下:

    make
    

    而一般的安装过程通过如下的命令来进行:

    make install
    

    其中 install 是存在于 Makefile 中的一个标记,make 命令可以根据这个标记中所设置的流程化内容来进行处理。

    编译过程,虽然没有任何的指定标记,但是实际上 make 命令会从 Makefile 中查找 all 标记,并且根据该标记的流程来进行处理。

    在 Makefile 中可以有很多的标记,不同的标记可以设置一组操作流程,通过 make 自带的参数就可以去执行这些操作,因此 Makefile 的作用不止是局限于编译软件包,很多流程化的工作都是可以使用 Makefile 配合 make 命令来完成的,但是一般 make 命令用于软件包的编译安装工作。

    虽然同一个标记在不同的软件包中的含义是不一样的,但是一般还是有约定俗称的流程标记。

    常见的编译标记

    需要注意点的一点

    并不是所有的软件包都需要编译过程,软件包的安装过程也可能只需要复制命令就行了,类似 mac bundle。

    判断 make 命令是否正确结束的方法

    有两种方法,一种是使用命令

    echo $?
    
    如果返回的是 0 就表示正确,如果是非零就表示错误。
    

    另外一种是观察。

    当你用 make 命令编译的时候,如果发现输出的一堆文字里,有 error 字样,就说明 make 失败了。

    2>&1 是啥意思?

    2> 这个代表将错误输出流。

    &1 代表正确输出流

    2>&1 代表将错误输出流,合并正确输出流,也就是说,正确输出和错误输出都有了,信息完整。

    因为默认情况下,具体的错误信息输出是不会显示出来的。

    如何判断软件包里面安装的文件?

    通过指定 make 安装的目录来进行指定,只要你将所有的安装文件都安装到制定的目录中,这样只要看一下这个目录就可以知道这个软件包所安装的文件了。

    也就是利用 make 的一个参数「DESTDIR」,该参数在 make install 中进行制定。

    DESTDIR 一直是被默认实用的,如果不专门制定,DESTDIR 被定义为空,不会影响实际的安装路径,比如制定某个软件包的 prefix 参数为 /usr 那么一般情况下 make install 是将文件以 /usr 为基础目录来进行安装的,而实际上安装的目录是以 ${DESTDIR}${prefix} 这样的形式来处理的。

    如果 DESTDIR 没有制定,那么就等于是 ${prefix} 所以就安装到了 /usr 目录下了,如果 DESTDIR 被指定为非空的目录,那么安装程序就把文件安装在这个目录下的 ${prefix} 也就是默认的 /usr 目录下。

    并不是所有的软件包都可以通过设置 DESTDIR 这个参数来制定目录的

    有些会使用 ROOT 还有写软件包会使用 PREFIX 来制定,所以你如果要指定目录的话,一定要查看软件包中的说明文件来了解一下,也可以只直接查看 Makefile 是否定义了 DESTDIR 活着其他几个常见的目录制定参数来判断是否支持制定目录安装。

  • 相关阅读:
    Eclipse 导入项目乱码问题(中文乱码)
    sql中视图视图的作用
    Java基础-super关键字与this关键字
    Android LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot)的参数理解
    Android View和ViewGroup
    工厂方法模式(java 设计模式)
    设计模式(java) 单例模式 单例类
    eclipse乱码解决方法
    No resource found that matches the given name 'Theme.AppCompat.Light 的完美解决方案
    【转】使用 Eclipse 调试 Java 程序的 10 个技巧
  • 原文地址:https://www.cnblogs.com/0x1D/p/4727055.html
Copyright © 2011-2022 走看看