加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

configure选项

发布时间:2020-12-16 00:36:04 所属栏目:大数据 来源:网络整理
导读:? 1、 configure --prefix=/tools --disable-nls --prefix=/tools 这个参数告诉 configure 脚本,应该把 Binutils 软件包中的程序安装到 /tools 目录中。 --disable-nls 这个参数禁止了国际化(通常简称i18n),静态程序不需要国际化的特性。 2、 configure --
?

1、
configure --prefix=/tools --disable-nls

--prefix=/tools
这个参数告诉 configure 脚本,应该把 Binutils 软件包中的程序安装到 /tools 目录中。

--disable-nls
这个参数禁止了国际化(通常简称i18n),静态程序不需要国际化的特性。


2、
configure --prefix=/tools
??? --with-local-prefix=/tools --disable-nls --enable-shared
??? --enable-languages=c

--with-local-prefix=/tools
这个参数的目的是把 /usr/local/include 目录从 gcc 的 include 搜索路径里删除。这并不是绝对必要,但我们想尽量减小宿主系统的影响,所以才这样做。

--enable-shared
这个参数咋一看有点违反直觉。但只有加上它,才能编译出 libgcc_s.so.1 和 libgcc_eh.a 。Glibc(下一个软件包)的配置脚本只有在找到 libgcc_eh.a 时才能确保产生正确的结果。

--enable-languages=c
只编译 GCC 软件包中的 C 编译器。我们在本章里不需要其它编译器。


3、
configure --prefix=/tools
??? --disable-profile --enable-add-ons
??? --enable-kernel=2.6.0 --with-binutils=/tools/bin
??? --without-gd --with-headers=/tools/include
??? --without-selinux

--disable-profile
它关掉了 profiling 信息相关的库文件编译。如果你打算做 profiling ,就省掉这个参数。

--enable-add-ons
这个指示 Glibc 使用附加的 NPTL 包作为线程库。

--enable-kernel=2.6.0
这个告诉 Glibc 编译支持 2.6.x 内核的库。

--with-binutils=/tools/bin
这个参数并不是必需的。但它们能保证在编译 Glibc 时不会用错 Binutils 程序。

--without-gd
这个参数保证不生成 memusagestat 程序,这个程序会顽固地连接到宿主系统的库文件(libgd,libpng,libz 等等)。

--with-headers=/tools/include
这个参数指示 Glibc 按照前面刚刚安装到 tools 目录中的内核头文件编译自己,从而精确的知道内核的特性以根据这些特性对自己进行最佳化编译。

--without-selinux
当从一个含有 SELinux 特性的宿主系统(如 Fedora Core 3)编译时,Glibc 将会将 SELinux 支持编译进来。由于 LFS 工具链并不包含 SELinux 支持,所以一个含有 SELinux 特性的 Glibc 将会导致许多操作失败。所以这里明确禁用它。


4、
./configure --prefix=/tools --with-tcl=/tools/lib
? --with-tclinclude=/tools/include --with-x=no

--with-tcl=/tools/lib
这个选项确保配置脚本找到的是安装在临时工具目录下的 Tcl ,而不是宿主系统里的。

--with-tclinclude=/tools/include
这个选项告诉 Expect 到哪里寻找 Tcl 的源代码目录和头文件。使用这个选项可以避免 configure 脚本因为找不到 Tcl 的源代码目录而导致的失败。

--with-x=no
这个选项告诉 configure 脚本不要搜索 Tk(Tcl的图形界面组件)或者 X Window 系统的库,这两者都可能位于宿主系统上。


5、
configure --prefix=/tools
??? --with-local-prefix=/tools --enable-clocale=gnu
??? --enable-shared --enable-threads=posix
??? --enable-__cxa_atexit --enable-languages=c,c++
??? --disable-libstdcxx-pch

--enable-clocale=gnu
本参数确保 C++ 库在任何情况下都使用正确的 locale 模块。如果配置脚本查找到 de_DE 这个 locale ,它就会使用正确的 gnu locale 模块。然而,如果没有安装 de_DE ,就有可能创建出应用程序二进制接口(ABI)不兼容的 C++ 库文件,这是因为选择了错误的通用(generic) locale 模块。

--enable-threads=posix
使 C++ 异常能处理多线程代码。

--enable-__cxa_atexit
用 __cxa_atexit 代替 atexit 来登记 C++ 对象的本地静态和全局析构函数,这是为了完全符合标准对析构函数的处理规定。它还会影响到 C++ ABI ,因此生成的 C++ 共享库在其他的 Linux 发行版上也能使用。

--enable-languages=c,c++
本参数编译 C 和 C++ 语言的编译器。

--disable-libstdcxx-pch
不为 libstdc++ 编译预编译头(PCH),它占用了很大空间,但是我们用不到它。


6、
configure --prefix=/tools
??? --disable-nls --with-lib-path=/tools/lib

--with-lib-path=/tools/lib
这个选项指示 configure 脚本在 Binutils 编译过程中将传递给连接器的库搜索路径设为 /tools/lib ,以防止连接器搜索宿主系统的库目录。


7、
./configure --prefix=/tools --with-shared
??? --without-debug --without-ada --enable-overwrite

--without-ada
这个选项让 Ncurses 在即使宿主系统上安装了 Ada 编译器的情况下也不要编译其 Ada 绑定。需要这样做的原因是一旦我们进入 chroot 环境,Ada 就不能使用了。

--enable-overwrite
这个选项让 Ncurses 把它的头文件安装到 /tools/include 目录,而不是 /tools/include/ncurses 目录,以确保其它软件包可以顺利找到 Ncurses 的头文件。


8、
./configure --prefix=/tools --without-bash-malloc

--without-bash-malloc
这个选项禁用了 Bash 的内存分配函数(malloc),这个函数已知会造成段错误,通过设置这个选项,Bash 将使用更为稳定的 Glibc 里的 malloc 函数。


9、
./configure --prefix=/tools --disable-shared

--disable-shared
当前我们不需要安装任何 Gettext 共享库,因此也就不需要编译它们。


10、
./configure --prefix=/tools
??? --disable-perl-regexp

--disable-perl-regexp
这个选项确保 grep 程序不连接可能在宿主系统上存在的 PCRE(Perl 兼容正则表达式)库,因为进入 chroot 环境后,它就不能使用了。


11、
./configure.gnu --prefix=/tools -Dstatic_ext='Data/Dumper Fcntl IO POSIX'

-Dstatic_ext='Data/Dumper Fcntl IO POSIX'
这个选项让 Perl 编译静态扩展的最小集,下一章安装和测试 Coreutils 软件包的时候需要用到。


12、
configure --prefix=/usr
??? --disable-profile --enable-add-ons
??? --enable-kernel=2.6.0 --libexecdir=/usr/lib/glibc

--libexecdir=/usr/lib/glibc
把pt_chown程序的位置从默认的 /usr/libexec 改为 /usr/lib/glibc 。


13、
configure --prefix=/usr --enable-compat185 --enable-cxx

--enable-compat185
这个选项指定编译 Berkeley DB 1.85 向上兼容性API。

--enable-cxx
这个选项指定编译 C++ API 库。


14、
./configure --prefix=/usr --with-shared --without-debug --enable-widec

--enable-widec
这个选项导致宽字符库(例如,libncursesw.so.5.5)将会替换正常的(例如,libncurses.so.5.5)。这些宽字符库可以在 多字节和传统的8位 locale 下使用,然而正常的库一般只能在 8位 的locale环境下工作。宽字符和正常的库是源码兼容的,但不是二进制兼容的。


15、
./configure --prefix=/usr --bindir=/bin --enable-html

--enable-html
This builds the HTML documentation.


16、?
对 Perl 的设置进行更多的控制,你可以运行交互的 Configure 脚本,精心选择编译配置。如果你能接受 Perl 的自动配置(这是很明智的),就用下面的命令:
./configure.gnu --prefix=/usr
??? -Dman1dir=/usr/share/man/man1
??? -Dman3dir=/usr/share/man/man3
??? -Dpager="/usr/bin/less -isR"

-Dpager="/usr/bin/less -isR"
纠正 perldoc 代码调用 less 程序时的一个错误。

-Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3
因为 Groff 还没有安装,Configure 会认为我们不想安装 Perl 的 man 手册。应用这个参数来改变这种情况:


17、
./configure --prefix=/usr --bindir=/bin
??? --without-bash-malloc --with-installed-readline

--with-installed-readline
这个选项是告诉 Bash 使用已经安装的系统的 readline 库,而不是它自己的 readline 版本。


18、
../configure --prefix=/usr --with-root-prefix=""
??? --enable-elf-shlibs --disable-evms

--with-root-prefix=""
有的程序(如 e2fsck )对系统来说是非常重要的,例如,在 /usr 没有挂载的情况下。这些程序和库就应放在像 /lib 和 /sbin 这些目录中。如果没有把上面的参数传递给 E2fsprogs 的 configure 脚本,它就会把程序放在 /usr 目录下。

--enable-elf-shlibs
这会创建共享的库,供 E2fsprogs 包中的一些程序使用。

--disable-evms
这个选项禁止了企业卷管理系统(EVMS)插件的支持。因为这个插件并没有更新到适合最新的 EVMS 接口并且 EVMS 并不是基本 LFS 系统的一部分,所以我们并不需要这个插件。


19、
./configure --prefix=/usr --libexecdir=/usr/lib/findutils
??? --localstatedir=/var/lib/locate

--localstatedir
将 locate 数据库的位置指定为 /var/lib/locate ,以符合 FHS 标准。


20、
./configure --prefix=/usr --libexecdir=/usr/sbin
??? --sysconfdir=/etc --localstatedir=/var
??? --disable-logger --disable-syslogd
??? --disable-whois --disable-servers

--disable-logger
阻止 inetutils 安装 logger 程序,脚本利用这个程序向系统日志守护进程传递消息。我们不安装它是因为 Util-linux 包含一个更好的版本。

--disable-syslogd
这个参数阻止 inetutils 安装 System Log Daemon(系统日志守护进程),我们将在后面的 Sysklogd 软件包中安装它。

--disable-whois
阻止 inetutils 编译 whois 客户端,因为它已经很陈旧了。在 BLFS book 里面有安装更好的 whois 客户端的指导。

--disable-servers
阻止安装几种网络服务器。这些服务器对于基本的 LFS 系统是不合适的,有的还不安全,很多服务器都有更好的替代者。


21、
./configure --datadir=/lib/kbd

--datadir=/lib/kbd
这个选项把键盘布局信息存放到根分区内,而不是存放在默认的 /usr/share/kbd。


22、
./configure --prefix=/usr --sysconfdir=/etc

--sysconfdir=/etc
这个选项告诉程序建立软件包时在 /etc 目录里查找配制文件。


23、
./configure --prefix=/usr --enable-mb-groff --disable-setuid

--enable-mb-groff
通知 man 在格式化非ISO-8859-1格式的 manual 页时,使用 "ascii8" 和 "nippon" Groff 设备。

--disable-setuid
使 man 不能给用户 man 设置uid位。


24、
./configure --prefix=/usr --with-libc

--with-libc
这个使得 mktemp 程序从系统的 C 库中使用 mkstemp 和 mkdtemp 的功能。


25、
./configure --prefix=/usr --exec-prefix=""

--exec-prefix=""
这个确保 Psmisc 二进制文件按照 FHS 标准被安装在 /bin 而不是 /usr/bin ,因为一些 Psmisc 二进制文件将被 LFS-Bootscripts 使用。


26、
./configure --libdir=/lib --enable-shared --without-selinux

--without-selinux
selinux 的支持默认是打开的,但是 selinux 不包含在 LFS 基本系统中。如果这个选项不设置, configure 脚本会报错。


27、
./configure --prefix=/usr --enable-multibyte

--enable-multibyte
我们强烈推荐你启用该选项(虽然它是可选的),因为它使得 Vim 可以支持使用多字节字符编码的文件,在一个使用多字节字符集的 locale 上,这是必需的。另外该选项还有助于编辑在默认使用 UTF-8 字符集的其它 Linux 发行版(如 Fedora Core)上创建的文本文件。

28、

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读