• 【转】理解 configure 脚本


    原文:https://www.jianshu.com/p/81916fba741c

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

    configure

    configure脚本为了让一个程序能够在各种不同类型的机器上运行而设计的。在使用make编译源代码之前,configure会根据自己所依赖的库而在目标机器上进行匹配。

    约定俗成的,所有的configure脚本都把脚本文件名起为configure,一般来讲都是shell脚本,根据所在的系统环境生成makefile文件。有时候看到一些程序的configure内容超级之多,让人难以看下去。

    configure脚本运行时扫描当前环境,生成一个名为config.status的子脚本。子脚本将Makefile.in文件转换为适应于当前系统环境的Makefile文件。

    GNU build system

    这个工具能够帮助我们生成configure脚本。GNU build system,又叫做Autotools

    这个工具查询当前系统的环境变量、平台架构、当前所依赖的库以及他们的位置,然后根据这些信息去make,这样就能实现同一套代码仅需configure一下就可以在不同的unix/linux系统中编译运行。

    Autotools包含的命令有autoconfautomakelibtool

    autoconf

    autoconf命令的主要作用是创建configure。它基于configure.ac文件生成configure文件。

    autoscan

    autoscan是autoconf的辅助命令,它创建一个预备的configure(configure.scan),作为autoconf命令的输入。我们可以按需在这个文件上进行添加内容,修改之后手工修改名字变成configure.ac文件。

    autoheader

    autoheader也是autoconf的辅助命令,用于生成一个configure的模版头文件config.h.in

    automake

    automake命令的主要作用是创建Makefile。以Makefile.amconfigure.ac为输入,以Makefile.in为输出。Makefile.in在configure执行时用于生成Makefile

    libtool

    libtool命令的主要作用是创建和使用可移植的共享(动态链接)库。

    其他相关命令

    ifnames 命令可以列出程序中的预处理标示符,比如#if,#ifdef等。

    m4 处理文件中的宏。

    pkg-config 查询已安装库的接口。

    configure 标准文件流

    下面的命令和文件流清晰的描述了从configure到make的整个过程。

     
    configure 标准流程

    参考资料

    configure

    GNU build system

    autotools faq

    autoconf doc



    作者:那些年我们一起遇到过的坑
    链接:https://www.jianshu.com/p/81916fba741c
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    hdu4717 The Moving Points(二分做法)
    C++中用rand()和srand()产生随机数方法介绍
    教你看懂C++类库函数定义之一---HRESULT 宏
    [置顶] IOS培训资料
    调试出不来 断点不起作用 调试技巧 MyEclipse进不了调试
    [置顶] 编程模仿boost::function和boost::bind
    模拟红外协议接收程序
    Java 使用JDBC、DBCP、C3P0访问数据库
    Linux点亮一个灯
    Makefile解析(最简单的LED)
  • 原文地址:https://www.cnblogs.com/oxspirt/p/13298085.html
Copyright © 2020-2023  润新知