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 活着其他几个常见的目录制定参数来判断是否支持制定目录安装。

  • 相关阅读:
    Android -- Camera2(Android5.0)
    Android -- Camera.ShutterCallback
    Android -- selector&&StateListDrawable
    Centos安装FTP服务器和配置
    Android -- setWillNotDraw()
    Android -- ViewPager切换动画,PageTransformer
    关于通信的关键词UDP/(TCP/IP)/IPC/RPC/.NET Remoting/WebService/WCF/Http 系列
    已禁用对分布式事务管理器(MSDTC)的网络访问。请使用组件服务管理工具启用 DTC 以便在 MSDTC 安全配置中进行网络访问。
    JavaScript的NaN-唯一 一个自己不等于自己的对象!!
    【ShoppingPeeker】-基于Webkit内核的爬虫蜘蛛引擎 ShoppingWebCrawler的姊妹篇-可视化任务Web管理
  • 原文地址:https://www.cnblogs.com/0x1D/p/4727055.html
Copyright © 2011-2022 走看看