常见的源码编译选项

源码一般安装步骤

  • 配置 configure
  • 编译 make
  • 安装 make install
    make命令一般可以使用-j选项加速,后面的参数根据自己的CPU确定。

配置 configure

一般情况下在源码目录使用

./configure –-help

命令可以查看配置选项的详细说明。
以 gcc 为例

$ ./configure --help
`configure' configures this package to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
  -V, --version           display version information and exit
  -q, --quiet, --silent   do not print `checking...' messages
      --cache-file=FILE   cache test results in FILE [disabled]
  -C, --config-cache      alias for `--cache-file=config.cache'
  -n, --no-create         do not create output files
      --srcdir=DIR        find the sources in DIR [configure dir or `..']

Installation directories:
  --prefix=PREFIX         install architecture-independent files in PREFIX
                          [/usr/local]
  --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                          [PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc.  You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.

For better control, use the options below.

Fine tuning of the installation directories:
  --bindir=DIR            user executables [EPREFIX/bin]
  --sbindir=DIR           system admin executables [EPREFIX/sbin]
  --libexecdir=DIR        program executables [EPREFIX/libexec]
  --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
  --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
  --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
  --libdir=DIR            object code libraries [EPREFIX/lib]
  --includedir=DIR        C header files [PREFIX/include]
  --oldincludedir=DIR     C header files for non-gcc [/usr/include]
  --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
  --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
  --infodir=DIR           info documentation [DATAROOTDIR/info]
  --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
  --mandir=DIR            man documentation [DATAROOTDIR/man]
  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE]
  --htmldir=DIR           html documentation [DOCDIR]
  --dvidir=DIR            dvi documentation [DOCDIR]
  --pdfdir=DIR            pdf documentation [DOCDIR]
  --psdir=DIR             ps documentation [DOCDIR]

Program names:
  --program-prefix=PREFIX            prepend PREFIX to installed program names
  --program-suffix=SUFFIX            append SUFFIX to installed program names
  --program-transform-name=PROGRAM   run sed PROGRAM on installed program names

System types:
  --build=BUILD     configure for building on BUILD [guessed]
  --host=HOST       cross-compile to build programs to run on HOST [BUILD]
  --target=TARGET   configure for building compilers for TARGET [HOST]

Optional Features:
  --disable-option-checking  ignore unrecognized --enable/--with options
  --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
  --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
  --enable-as-accelerator-for=ARG
                          build as offload target compiler. Specify offload
                          host triple by ARG
  --enable-offload-targets=LIST
                          enable offloading to devices from comma-separated
                          LIST of TARGET[=DIR]. Use optional path to find
                          offload target compiler during the build
  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]
  --enable-ld[=ARG]       build ld [ARG={default,yes,no}]
  --enable-compressed-debug-sections={all,gas,gold,ld,none}
                          Enable compressed debug sections for gas, gold or ld
                          by default
  --disable-libquadmath   do not build libquadmath directory
  --disable-libquadmath-support
                          disable libquadmath support for Fortran
  --enable-libada         build libada directory
  --enable-libssp         build libssp directory
  --disable-libstdcxx     do not build libstdc++-v3 directory
  --enable-liboffloadmic=ARG
                          build liboffloadmic [ARG={no,host,target}]
  --enable-bootstrap      enable bootstrapping [yes if native build]
  --disable-isl-version-check
                          disable check for isl version
  --enable-lto            enable link time optimization support
  --enable-linker-plugin-configure-flags=FLAGS
                          additional flags for configuring linker plugins
                          [none]
  --enable-linker-plugin-flags=FLAGS
                          additional flags for configuring and building linker
                          plugins [none]
  --enable-host-shared    build host code as shared libraries
  --enable-stage1-languages[=all]
                          choose additional languages to build during stage1.
                          Mostly useful for compiler development
  --enable-objc-gc        enable use of Boehm's garbage collector with the GNU
                          Objective-C runtime
  --enable-vtable-verify  Enable vtable verification feature
  --enable-serial-[{host,target,build}-]configure
                          force sequential configuration of sub-packages for
                          the host, target or build machine, or all
                          sub-packages
  --enable-maintainer-mode
                          enable make rules and dependencies not useful (and
                          sometimes confusing) to the casual installer
  --enable-stage1-checking[=all]
                          choose additional checking for stage1 of the
                          compiler
  --enable-werror         enable -Werror in bootstrap stage2 and later

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --with-build-libsubdir=DIR  Directory where to find libraries for build system
  --with-system-zlib      use installed libz
  --with-mpc=PATH         specify prefix directory for installed MPC package.
                          Equivalent to --with-mpc-include=PATH/include plus
                          --with-mpc-lib=PATH/lib
  --with-mpc-include=PATH specify directory for installed MPC include files
  --with-mpc-lib=PATH     specify directory for the installed MPC library
  --with-mpfr-dir=PATH    this option has been REMOVED
  --with-mpfr=PATH        specify prefix directory for installed MPFR package.
                          Equivalent to --with-mpfr-include=PATH/include plus
                          --with-mpfr-lib=PATH/lib
  --with-mpfr-include=PATH
                          specify directory for installed MPFR include files
  --with-mpfr-lib=PATH    specify directory for the installed MPFR library
  --with-gmp-dir=PATH     this option has been REMOVED
  --with-gmp=PATH         specify prefix directory for the installed GMP
                          package. Equivalent to
                          --with-gmp-include=PATH/include plus
                          --with-gmp-lib=PATH/lib
  --with-gmp-include=PATH specify directory for installed GMP include files
  --with-gmp-lib=PATH     specify directory for the installed GMP library
  --with-stage1-libs=LIBS libraries for stage1
  --with-stage1-ldflags=FLAGS
                          linker flags for stage1
  --with-boot-libs=LIBS   libraries for stage2 and later
  --with-boot-ldflags=FLAGS
                          linker flags for stage2 and later
  --with-isl=PATH         Specify prefix directory for the installed isl
                          package. Equivalent to
                          --with-isl-include=PATH/include plus
                          --with-isl-lib=PATH/lib
  --with-isl-include=PATH Specify directory for installed isl include files
  --with-isl-lib=PATH     Specify the directory for the installed isl library
  --with-target-bdw-gc=PATHLIST
                          specify prefix directory for installed bdw-gc
                          package. Equivalent to
                          --with-target-bdw-gc-include=PATH/include plus
                          --with-target-bdw-gc-lib=PATH/lib
  --with-target-bdw-gc-include=PATHLIST
                          specify directories for installed bdw-gc include
                          files
  --with-target-bdw-gc-lib=PATHLIST
                          specify directories for installed bdw-gc library
  --with-gcc-major-version-only
                          use only GCC major number in filesystem paths
  --with-build-sysroot=SYSROOT
                          use sysroot as the system root during the build
  --with-debug-prefix-map='A=B C=D ...'
                          map A to B, C to D ... in debug information
  --with-build-config='NAME NAME2...'
                          use config/NAME.mk build configuration
  --with-build-time-tools=PATH
                          use given path to find target tools during the build

Some influential environment variables:
  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>
  CXX         C++ compiler command
  CXXFLAGS    C++ compiler flags
  build_configargs
              additional configure arguments for build directories
  host_configargs
              additional configure arguments for host directories
  target_configargs
              additional configure arguments for target directories
  AR          AR for the host
  AS          AS for the host
  DLLTOOL     DLLTOOL for the host
  LD          LD for the host
  LIPO        LIPO for the host
  NM          NM for the host
  RANLIB      RANLIB for the host
  STRIP       STRIP for the host
  WINDRES     WINDRES for the host
  WINDMC      WINDMC for the host
  OBJCOPY     OBJCOPY for the host
  OBJDUMP     OBJDUMP for the host
  READELF     READELF for the host
  CC_FOR_TARGET
              CC for the target
  CXX_FOR_TARGET
              CXX for the target
  GCC_FOR_TARGET
              GCC for the target
  GFORTRAN_FOR_TARGET
              GFORTRAN for the target
  GOC_FOR_TARGET
              GOC for the target
  AR_FOR_TARGET
              AR for the target
  AS_FOR_TARGET
              AS for the target
  DLLTOOL_FOR_TARGET
              DLLTOOL for the target
  LD_FOR_TARGET
              LD for the target
  LIPO_FOR_TARGET
              LIPO for the target
  NM_FOR_TARGET
              NM for the target
  OBJCOPY_FOR_TARGET
              OBJCOPY for the target
  OBJDUMP_FOR_TARGET
              OBJDUMP for the target
  RANLIB_FOR_TARGET
              RANLIB for the target
  READELF_FOR_TARGET
              READELF for the target
  STRIP_FOR_TARGET
              STRIP for the target
  WINDRES_FOR_TARGET
              WINDRES for the target
  WINDMC_FOR_TARGET
              WINDMC for the target

Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.

Report bugs to the package provider.

常见选项

各个选项的用法help已经说得很清楚了,这里只解释几个常用的

  • --help
      输出帮助信息。

  • --prefix=PREFIX
    将软件架构无关部分安装到指定目录PREFIX,默认为/usr/local

  • --exec-prefix=EPREFIX
    将软件架构相关部分,就是可执行文件,安装到指定目录EPREFIX,默认为PREFIX

  • --program-prefix=PREFIX
    指定将被加到所安装程序的名字上的前缀。

  • --program-suffix=SUFFIX
    指定将被加到所安装程序的名字上的后缀。

  • --program-transform-name=PROGRAM
    这里的PROGRAM是一个sed脚本。当一个程序被安装时,他的名字将经过sed -e PROGRAM来产生安装的名字。

  • --build=BUILD
    指定软件包安装的系统平台,就是你现在使用的机器。如果没有指定,默认为--host

  • --host=HOST
    指定软件运行的系统平台,就是编译好的程序能够运行的平台。默认为config.guess的结果。

  • --target=GARGET
    指定软件面向的系统平台。一般在构建交叉编译工具链的时候用。默认为--host

参考资料

https://en.wikipedia.org/wiki/Cross_compiler

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值