• c++ configure帮助


    运行./configure --help
    通过configure可以配置很多信息,下面挑几个重要的选项进行描述。

    --prefix=PREFIX
    配置安装路径,要用绝对路径。
    make install时会把可执行文件,配置文件或库安装到目录下的对应目录中,如bin/,lib/等

    --build=BUILD
    编译所在的环境
    --host=HOST
    程序运行的环境对应的交叉编译器

    Optional Packages:
    --with-PACKAGE
    在自由软件社区里,有使用已有软件包和库的优秀传统.当用'configure'来配置一个源码树时,可以提供其他已经安装的软件包的信息.例如,倚赖于Tcl和Tk的BLT器件工具包.要配置BLT,可能需要给'configure'提供一些关于我们把Tcl和Tk装的何处的信息:
    $ ./configure --with-tcl=/usr/local --with-tk=/usr/local

    其它关键是环境变量,包括:
      CC          C compiler command
      CFLAGS      C compiler flags
      LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
                  nonstandard directory <lib dir>
      LIBS        libraries to pass to the linker, e.g. -l<library>
      CPPFLAGS    C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
                  you have headers in a nonstandard directory <include dir>
      CPP         C preprocessor
      PKG_CONFIG  path to pkg-config utility
      LIBXML2_CFLAGS
                  C compiler flags for LIBXML2, overriding pkg-config
      LIBXML2_LIBS
                  linker flags for LIBXML2, overriding pkg-config

    注意,pkg-config
    pkg-config用来检索系统中安装库文件的信息。
    一般来说,如果库的头文件不在/usr/include目录中,那么在编译的时候需要用-I参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库的时候也可以将库安装在不同的目录下,所以即使使用同一个库,由于库的路径的不同,造成了用-I参数指定的头文件的路径和在连接时使用-L参数指定lib库的路径都可能不同,其结果就是造成了编译命令界面的不统一。可能由于编译,连接的不一致,造成同一份程序从一台机器copy到另一台机器时就可能会出现问题。

    pkg-config 就是用来解决编译连接界面不统一问题的一个工具。

    它的基本思想:pkg-config是通过库提供的一个.pc文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。需要的时候可以通过pkg-config提供的参数(–cflags, –libs),将所需信息提取出来供编译和连接使用。这样,不管库文件安装在哪,通过库对应的.pc文件就可以准确定位,可以使用相同的编译和连接命令,使得编译和连接界面统一。

    它提供的主要功能有:

    <1> 检查库的版本号。如果所需库的版本不满足要求,打印出错误信息,避免连接错误版本的库文件。
    <2> 获得编译预处理参数,如宏定义,头文件的路径。
    <3> 获得编译参数,如库及其依赖的其他库的位置,文件名及其他一些连接参数。
    <4> 自动加入所依赖的其他库的设置。

    在默认情况下,每个支持 pkg-config 的库对应的.pc文件在安装后都位于安装目录中的lib/pkgconfig目录下。例如,我们在上面已经将Glib安装在/opt/gtk目录下了,那么这个Glib库对应的.pc文件是 /opt/gtk/lib/pkgconfig目录下一个叫glib-2.0.pc的文件.

    Apollo对应的安装是:
    ${_TMTGTBUILDROOT}/comps/generic_apps/usr/lib/pkgconfig

    所以下面是一个正确的fongconfig编译时的shell脚本,运行sh shell.sh

    #!/bin/sh

    OUTPUT_PREFIX=${_TMTGTBUILDROOT}/comps/generic_apps/usr
    GEN_APPS_DIR=${_TMTGTBUILDROOT}/comps/generic_apps


    export CC="arm-linux-uclibcgnueabi-gcc --sysroot ${_TMSYSROOT}"
    export LDFLAGS="--sysroot ${_TMSYSROOT} -L${GCC_BASE}/lib -L${_TMTGTBUILDROOT}/comps/generated/lib/armgnu_linux_el_cortex-a9  -L${GEN_APPS_DIR}/usr/lib"
    export PKG_CONFIG="${OUTPUT_PREFIX}/lib/pkgconfig"
    export CPPFLAGS="--sysroot ${_TMSYSROOT} -I${KSRC}/include -I${GCC_BASE}/include
            -I${OUTPUT_PREFIX}/include ${BUILD32}
            -I${OUTPUT_PREFIX}/include/freetype2
            -I${OUTPUT_PREFIX}/include/freetype2/freetype -DBSP_LITTLE_ENDIAN=1 -I${KSRC}/arch/arm/include
            -I${_TMROOT}/inc
            -I${NXP_BASE_ROOT}/target/output/objs/${KERNEL_CONFIG}/include
            -I${GEN_APPS_DIR}/usr/include"

    ./configure --build=i686-linux --host=arm-linux --with-arch=arm

  • 相关阅读:
    Laravel -- Excel 导入(import) (v2.1.0)
    mysql触发器
    支付宝和微信支付的坑
    php 中的引用(&)与foreach结合后的一个注意点
    oatu2.0认证原理(转)
    python3:time类
    python3练习:针对某一日期增加或减少时间、天数
    python:datetime类常用内容
    python3练习:计算日期差
    python3练习:涉及序列
  • 原文地址:https://www.cnblogs.com/neights/p/13658522.html
Copyright © 2020-2023  润新知