zoukankan      html  css  js  c++  java
  • 难题autoconf、automake、libtool

     1、./configure 脚本生成 自定义宏(Defining C Preprocessor Symbols):
         在 configure.in,通过 AC_DEFINE([STUDY],[yes],[define test]) 定义。 这个例子中定义个 STUDY的宏,值为 yes。执行 autoreconf ,然后configure后,输入的config.h中,基本就是下面的样子:
    /* define test */
    #define STUDY yes

         重点: gnu风格的程序,通过 configure & make 编译程序。configure分析系统环境,并保存结果,供源代码使用。AC_DEFINE 是保存结果的方式之一。

    2、./configure 使用 --with-package功能: 
         AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given]) 有4个参数,参考官方说明,比较容易理解。但是有点小麻烦,如--with-package=ABC,如果获取 '='后面的值,成为一个问题。看官方例子:

    AC_ARG_WITH([readline],
        [AS_HELP_STRING([
    --with-readline],
            [support fancy command line editing @
    <:@default=check@:>@])],
        []
    ,
        [with_readline
    =check])

    LIBREADLINE
    =
    AS_IF([test 
    "x$with_readline" != xno],
        [AC_CHECK_LIB([
    readline], [main],
        [AC_SUBST([LIBREADLINE]
    , ["-lreadline -lncurses"])
            AC_DEFINE([HAVE_LIBREADLINE]
    , [1],
                 [Define 
    if you have libreadline])
        ]
    ,
        [
    if test "x$with_readline" != xcheck; then
            AC_MSG_FAILURE(
                [
    --with-readline was given, but test for readline failed])
        fi
        ]
    , -lncurses)])

         其中 with_readline=check  和 [test "x$with_readline" != xno] 两行说明,可以通过 $with_<pakcage> shell变量,来获取命令行中的值(= 后面的部分)。经过实践:
                   如果没有指定 --with-<package>,则 $with_<package>为空,
                   如果指定 --without-<package>,则 $with_<package>为no
                   如果指定 --with-<package>,则 $with_<package>为yes,
                   如果指定 --with-<package>=ABC,则 $with_<package>为'ABC',
        重点: 如何通过命令行,对源代码配置进行适当的配置,$with_<package> 之类的参数提供一种沟通方式,让编译者控制源代码的生成。当然这个也需要用到 AC_DEFINE之类的命令。

  • 相关阅读:
    关于在ubuntu12.04图形界面下不能从root用户直接登录的问题
    error: stray '357' in program
    关于gcc -o 的使用问题
    如何解决程序退出重启后不能绑定端口的问题?
    使用Ubuntu12.04登陆账户时,输入密码是正确的,但是图形界面闪一下后就又回到登陆页面了
    如何在linux系统中设置严密的密码策略(译文)
    sqlite3数据库归纳
    Bing地图切片原理
    CSS技巧
    jQuery.extend方法和开发中变量的复用
  • 原文地址:https://www.cnblogs.com/thh/p/1523181.html
Copyright © 2011-2022 走看看