zoukankan      html  css  js  c++  java
  • 《Linux程序设计》——读书笔记(2)

    Linux环境:

    无论操作系统何时启动一个新程序,参数argc和argv都会被设置并传递给main(即使main函数未声明参数,此时只是不能使用这些参数)。这些参数通常由另一个程序提供,一般是shell,它要求操作系统启动该新程序。shell会接受用户输入的命令行,将命令行分解成单词,然后把这些单词放入argv数组。

    命令行参数在向程序传递信息方面很有用,很多工具程序使用命令行参数来改变程序的行为或设置选项(这一点我们很熟悉,但是可能很少会联想到正是argc、argv参数在这里发挥作用)。

    尽管命令行选项很常用也很有用,但是应注意遵循相同的方式。建议:在应用程序中,所有的命令行开关都以一个短横线开头,其后包含单个字母或数字;如果需要,不带后续参数的选项可以在一个短横线后归并到一起;如果某个选项需要值,则该值应作为独立的参数紧跟在该选项后。

    一句话GNU/Linux历史:为了取代Multics系统,Thompson和Ritchie开发了原始的UNIX系统;Richard Stallman为了构建一个任何人可以使用的、免费的类UNIX操作系统,创立了GNU和FSF;Linus Torvalds在Minix基础上创造了Linux内核;最终,Linux和GNU一拍即合,诞生了GNU/Linux操作系统。

    BSD是另一个重要的类UNIX操作系统,是GNU/LINUX的有力竞争对手。

    由源代码生成可执行文件:

    手工编译:gcc命令——不自动、不智能

    生成脚本——自动化、不智能

    make工具——自动化、智能化

    大多数大型的Linux软件项目开发都没有直接使用make,而是使用基于GNU make的“GNU automake/autoconf”工具

    Makefile是一个依赖树,从上到下逐级展开。

    当项目很庞大时,尽管make依然是一个有力的工具,但是要想维护好Makefile确是十分困难的,因此诞生了GNU自动工具“automake/autoconf”——为生成项目自动生成适当的Makefile文件

    使用automake/autoconf自动工具的最大好处是,可以依据环境自动生成make工具所需的Makefile文件,同时极大的方便了Makefile的后期维护工作。

    自动工具的使用:

    1.为源代码项目添加三类文件

    (1) autogen.sh     运行自动工具的shell脚本(位于项目根目录)

    (2) configure.ac    autoconf工具的输入文件(位于项目根目录)

    (3) Makefile.am    顶层的Makefile模版(项目根目录及有源代码要编译的各级子目录都要有各自的Makefile.am文件)

    2.在命令行执行如下命令

      # ./autogen.sh

      # ./configure

      # make

    ---------------------------------------------------------------------------------------------------------------------------

    分步解析:

    (1) 运行脚本autogen.sh:建立automake和autoconf工具工作所需要的本地环境;

                                                 运行automake工具将Makefile.am文件转换为Makefile.in文件;

                                                 运行autoconf工具,将configure.ac文件转化为名为“configure”的纯shell脚本。

    (2) 运行脚本configure:收集执行系统的信息;

                                              通过替换步骤将Makefile.in模板转化为实用的Makefile文件(可能是多个Makefile文件)。

    (3) 运行make工具:根据生成的Makefile文件对各级源文件进行编译链接,生成最终的可执行文件。

    ---------------------------------------------------------------------------------------------------------------------------

    要体会automake和autoconf工具的优越性,不是一件容易的事,但这确是当今大型开源项目广泛使用的方法。

  • 相关阅读:
    使用xca生成SSL证书
    在 Apache error_log 中看到多个信息,提示 RSA server certificate CommonName (CN) 与服务器名不匹配(转)
    SSL/TLS 高强度加密: 常见问题解答
    JAVA 集合操作总结
    VUE 微信开发
    实战 ant design pro 中的坑
    Spring boot 配置 mybatis xml和动态SQL 分页配置
    VUE打包上线优化
    VUE中如何优雅的动态绑定长按事件
    用C自撸apache简易模块,搭建图片处理服务器。
  • 原文地址:https://www.cnblogs.com/marcworld/p/3824691.html
Copyright © 2011-2022 走看看