文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>11.构建LFS系统──安装系统基础软件(三)

11.构建LFS系统──安装系统基础软件(三)

时间:2006-11-17  来源:anima

十一、构建LFS系统──安装系统基础软件(三)


9.Glibc-2.3.6

Glibc 包含了主要的C库。这个库提供了基本例程,用于分配内存、搜索目录、打开关闭文件、读写文件、字串处理、模式匹配、数学计算等等。

预计编译时间: 13.5 SBU (含测试套件)

所需磁盘空间: 510 MB (含测试套件)


9.1.安装Glibc

注意

一些 LFS 基本系统之外的软件包建议安装 GNU libiconv 以使得数据够能在不同编码之间进行转换。GNU libiconv 项目的主页(http://www.gnu.org/software/libiconv/) 说:"这个库为那些没有 iconv() 的系统或者虽然有 iconv() 却不能与 Unicode 相互转换的系统提供了一个能够与 Unicode 相互转换的实现 "。Glibc 库中有一个 iconv() ,并且能够与 Unicode 相互转换,因此,LFS 系统不需要 GNU libiconv 。


Glibc 的编译系统是高度自给自足的,即使当前编译器 specs 文件和连接器还指向 /tools 目录,也能正确安装。我们在安装 Glibc 前不能调整 specs 文件和连接器,否则 Glibc 的 autoconf 测试会失败,从而妨碍我们创建一个干净系统的目标。


root:/sources/man-pages-2.34# mv $LFS/sources/glibc-2.3.6 $LFS/sources/old

root:/sources/man-pages-2.34# mv $LFS/sources/glibc-build $LFS/sources/old

root:/sources/man-pages-2.34# tar -jxvf $LFS/sources/glibc-2.3.6.tar.bz2 -C $LFS/sources

root:/sources/man-pages-2.34# cd $LFS/sources/glibc-2.3.6



glibc-libidn这个包加上了对国际化域名(IDN)的支持到Glibc中。许多程序支持IDN需要全的libidn 库,而不是这个附加库。(参见 http://www.linuxfromscratch.org/blfs/view/svn/general/libidn.html).


解压缩包到Glibc的源码目录:


root:/sources/glibc-2.3.6# tar -xf ../glibc-libidn-2.3.6.tar.bz2



应用下面这个patch来修正软件包在sys/kd.h之后包含linux/types.h导致编译错误:


root:/sources/glibc-2.3.6# patch -Np1 -i ../glibc-2.3.6-linux_types-1.patch

patching file sysdeps/unix/sysv/linux/sys/kd.h

root:/sources/glibc-2.3.6#



添加一个头文件来定义为新内核对于inotify特性的系统调用函数:


root:/sources/glibc-2.3.6# patch -Np1 -i ../glibc-2.3.6-inotify-1.patch

patching file sysdeps/unix/sysv/linux/inotify.h

root:/sources/glibc-2.3.6#



在vi_VN.TCVN locale中, bash 一启动就进入一个无限循环之中。不知道这是一个 bash 的bug,还是一个Glibc的问题。为了避免这个问题,抑制这个locale的安装:


root:/sources/glibc-2.3.6# sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED



当运行 make install,一个叫test-installation.pl的脚本会在我们新安装的Glibc上做一个小的完整性测试。然而,由于我们的toolchain仍然指向/tools目录,完整性测试会导致使用错误的Glibc。我们可以强制脚本测试我们刚安装的脚本:

sed -i \

's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \

scripts/test-installation.pl


root:/sources/glibc-2.3.6# sed -i \

> 's|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \

> scripts/test-installation.pl




Glibc 文档推荐在源码目录之外的一个专门的编译目录下进行编译:


root:/sources/glibc-2.3.6# mkdir -v ../glibc-build

mkdir: created directory `../glibc-build'

root:/sources/glibc-2.3.6# cd ../glibc-build



为编译 Glibc 做准备:


root:/sources/glibc-build# ../glibc-2.3.6/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 。



编译软件包:


root:/sources/glibc-build# make && date +%c [开始于2006年11月13日19:52:15]

……

……

……

make[2]: Leaving directory `/sources/glibc-2.3.6/elf'

make[1]: Leaving directory `/sources/glibc-2.3.6'

Mon Nov 13 12:23:53 2006 [结束于2006年11月13日20:23:53]

root:/sources/glibc-build#


重要

本节的 Glibc 测试很重要。在任何情况下都不要省略这一步。


对结果进行测试:


root:/sources/glibc-build# make -k check 2>&1 | tee glibc-check-log [开始于2006年11月13日20:29:15]

[结束于2006年11月13日20:57:35]


root:/sources/glibc-build# grep Error glibc-check-log

make[2]: [/sources/glibc-build/posix/annexc.out] Error 1 (ignored)

root:/sources/glibc-build#



在posix/annexc 中,你可能会看到一个预料的错误(可以忽略)。另外,Glibc测试单元,多少依赖于宿主系统。下面是一些常见的错误:

  • nptl/tst-clock2 和tst-attr3 测试有时会出错。 原因现在还不是很明白,可能是系统负载过重导致的。

  • math 测试在一些使用较老的 Intel 或 AMD 的系统上会失败,某些优化设置也会导致该测试失败。

  • atime 会在使用noatime 选项挂载 LFS 分区时失败(参见“挂载新分区”),在编译LFS过程中不要使用noatime 选项。

  • 在一些很老很慢的机器上,一些测试会由于超时而失败。




在安装 Glibc 的过程中,它会警告缺少 /etc/ld.so.conf 文件。其实这没什么关系,不过下面的命令能修正它:


root:/sources/glibc-build# touch /etc/ld.so.conf


安装软件包:


root:/sources/glibc-build# make install

……

……

……

if test -r /usr/include/gnu/stubs.h && cmp -s /sources/glibc-build/stubs.h /usr/include/gnu/stubs.h; \

then echo 'stubs.h unchanged'; \

else /tools/bin/install -c -m 644 /sources/glibc-build/stubs.h /usr/include/gnu/stubs.h; fi

rm -f /sources/glibc-build/stubs.h

/sources/glibc-build/elf/sln /sources/glibc-build/elf/symlink.list

rm -f /sources/glibc-build/elf/symlink.list

test ! -x /sources/glibc-build/elf/ldconfig || LC_ALL=C LANGUAGE=C \

/sources/glibc-build/elf/ldconfig \

/lib /usr/lib

CC="gcc" /usr/bin/perl scripts/test-installation.pl /sources/glibc-build/

Your new glibc installation seems to be ok.

make[1]: Leaving directory `/sources/glibc-2.3.6'

root:/sources/glibc-build#


安装inotify头文件到系统头文件的地方:


root:/sources/glibc-build# cp -v ../glibc-2.3.6/sysdeps/unix/sysv/linux/inotify.h \

> /usr/include/sys

`../glibc-2.3.6/sysdeps/unix/sysv/linux/inotify.h' -> `/usr/include/sys/inotify.h'

root:/sources/glibc-build#



locales能使系统以一种上面命令没有安装的语言处理。要注意locales是必须的,如果他们中的一些丢失了,后面的测试单元会跳过重要测试。

单个的locale可以通过使用localedef 程序来安装。例如,下面的第一个 localedef 命令将/usr/share/i18n/locales/de_DE跟/usr/share/i18n/charmaps/ISO-8859-1.gz结合,并添加到 /usr/lib/locale/locale-archive 文件中。下面的说明将会安装一个所需locale的最小集合:


root:/sources/glibc-build# mkdir -pv /usr/lib/locale

mkdir: created directory `/usr/lib/locale'

root:/sources/glibc-build# localedef -i de_DE -f ISO-8859-1 de_DE

root:/sources/glibc-build# localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro

root:/sources/glibc-build# localedef -i en_HK -f ISO-8859-1 en_HK

root:/sources/glibc-build# localedef -i en_PH -f ISO-8859-1 en_PH

root:/sources/glibc-build# localedef -i en_US -f ISO-8859-1 en_US

root:/sources/glibc-build# localedef -i en_US -f UTF-8 en_US.UTF-8

root:/sources/glibc-build# localedef -i es_MX -f ISO-8859-1 es_MX

root:/sources/glibc-build# localedef -i fa_IR -f UTF-8 fa_IR

root:/sources/glibc-build# localedef -i fr_FR -f ISO-8859-1 fr_FR

root:/sources/glibc-build# localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro

root:/sources/glibc-build# localedef -i fr_FR -f UTF-8 fr_FR.UTF-8

root:/sources/glibc-build# localedef -i it_IT -f ISO-8859-1 it_IT

root:/sources/glibc-build# localedef -i ja_JP -f EUC-JP ja_JP

root:/sources/glibc-build#


另外,你可以安装你的国家、语言和字符集所对应的locale。


root:/sources/glibc-build# localedef -i zh_CN -f GB2312 zh_CN

root:/sources/glibc-build# localedef -i zh_CN -f UTF-8 zh_CN.UTF-8

root:/sources/glibc-build# localedef -i zh_CN -f GBK zh_CN.GBK

root:/sources/glibc-build# localedef -i zh_CN -f GB18030 zh_CN.GB18030




当然,可以一次安装所有列在glibc-2.3.6/localedata/SUPPORTED 中的locales,利用下面的命令:


root:/sources/glibc-build# cat ../glibc-2.3.6/localedata/SUPPORTED

# This file names the currently supported and somewhat tested locales.

# If you have any additions please file a glibc bug report.

SUPPORTED-LOCALES=\

aa_DJ.UTF-8/UTF-8 \

aa_DJ/ISO-8859-1 \

aa_ER/UTF-8 \

aa_ER@saaho/UTF-8 \

aa_ET/UTF-8 \

af_ZA.UTF-8/UTF-8 \

af_ZA/ISO-8859-1 \

am_ET/UTF-8 \

an_ES.UTF-8/UTF-8 \

an_ES/ISO-8859-15 \

ar_AE.UTF-8/UTF-8 \

ar_AE/ISO-8859-6 \

ar_BH.UTF-8/UTF-8 \

ar_BH/ISO-8859-6 \

ar_DZ.UTF-8/UTF-8 \

ar_DZ/ISO-8859-6 \

ar_EG.UTF-8/UTF-8 \

ar_EG/ISO-8859-6 \

ar_IN/UTF-8 \

ar_IQ.UTF-8/UTF-8 \

ar_IQ/ISO-8859-6 \

ar_JO.UTF-8/UTF-8 \

ar_JO/ISO-8859-6 \

ar_KW.UTF-8/UTF-8 \

ar_KW/ISO-8859-6 \

ar_LB.UTF-8/UTF-8 \

ar_LB/ISO-8859-6 \

ar_LY.UTF-8/UTF-8 \

ar_LY/ISO-8859-6 \

ar_MA.UTF-8/UTF-8 \

ar_MA/ISO-8859-6 \

ar_OM.UTF-8/UTF-8 \

ar_OM/ISO-8859-6 \

ar_QA.UTF-8/UTF-8 \

ar_QA/ISO-8859-6 \

ar_SA.UTF-8/UTF-8 \

ar_SA/ISO-8859-6 \

ar_SD.UTF-8/UTF-8 \

ar_SD/ISO-8859-6 \

ar_SY.UTF-8/UTF-8 \

ar_SY/ISO-8859-6 \

ar_TN.UTF-8/UTF-8 \

ar_TN/ISO-8859-6 \

ar_YE.UTF-8/UTF-8 \

ar_YE/ISO-8859-6 \

az_AZ.UTF-8/UTF-8 \

be_BY.UTF-8/UTF-8 \

be_BY/CP1251 \

bg_BG.UTF-8/UTF-8 \

bg_BG/CP1251 \

bn_BD/UTF-8 \

bn_IN/UTF-8 \

br_FR.UTF-8/UTF-8 \

br_FR/ISO-8859-1 \

br_FR@euro/ISO-8859-15 \

bs_BA.UTF-8/UTF-8 \

bs_BA/ISO-8859-2 \

byn_ER/UTF-8 \

ca_ES.UTF-8/UTF-8 \

ca_ES/ISO-8859-1 \

ca_ES@euro/ISO-8859-15 \

cs_CZ.UTF-8/UTF-8 \

cs_CZ/ISO-8859-2 \

cy_GB.UTF-8/UTF-8 \

cy_GB/ISO-8859-14 \

da_DK.UTF-8/UTF-8 \

da_DK/ISO-8859-1 \

de_AT.UTF-8/UTF-8 \

de_AT/ISO-8859-1 \

de_AT@euro/ISO-8859-15 \

de_BE.UTF-8/UTF-8 \

de_BE/ISO-8859-1 \

de_BE@euro/ISO-8859-15 \

de_CH.UTF-8/UTF-8 \

de_CH/ISO-8859-1 \

de_DE.UTF-8/UTF-8 \

de_DE/ISO-8859-1 \

de_DE@euro/ISO-8859-15 \

de_LU.UTF-8/UTF-8 \

de_LU/ISO-8859-1 \

de_LU@euro/ISO-8859-15 \

el_GR.UTF-8/UTF-8 \

el_GR/ISO-8859-7 \

en_AU.UTF-8/UTF-8 \

en_AU/ISO-8859-1 \

en_BW.UTF-8/UTF-8 \

en_BW/ISO-8859-1 \

en_CA.UTF-8/UTF-8 \

en_CA/ISO-8859-1 \

en_DK.UTF-8/UTF-8 \

en_DK/ISO-8859-1 \

en_GB.UTF-8/UTF-8 \

en_GB/ISO-8859-1 \

en_HK.UTF-8/UTF-8 \

en_HK/ISO-8859-1 \

en_IE.UTF-8/UTF-8 \

en_IE/ISO-8859-1 \

en_IE@euro/ISO-8859-15 \

en_IN/UTF-8 \

en_NZ.UTF-8/UTF-8 \

en_NZ/ISO-8859-1 \

en_PH.UTF-8/UTF-8 \

en_PH/ISO-8859-1 \

en_SG.UTF-8/UTF-8 \

en_SG/ISO-8859-1 \

en_US.UTF-8/UTF-8 \

en_US/ISO-8859-1 \

en_ZA.UTF-8/UTF-8 \

en_ZA/ISO-8859-1 \

en_ZW.UTF-8/UTF-8 \

en_ZW/ISO-8859-1 \

es_AR.UTF-8/UTF-8 \

es_AR/ISO-8859-1 \

es_BO.UTF-8/UTF-8 \

es_BO/ISO-8859-1 \

es_CL.UTF-8/UTF-8 \

es_CL/ISO-8859-1 \

es_CO.UTF-8/UTF-8 \

es_CO/ISO-8859-1 \

es_CR.UTF-8/UTF-8 \

es_CR/ISO-8859-1 \

es_DO.UTF-8/UTF-8 \

es_DO/ISO-8859-1 \

es_EC.UTF-8/UTF-8 \

es_EC/ISO-8859-1 \

es_ES.UTF-8/UTF-8 \

es_ES/ISO-8859-1 \

es_ES@euro/ISO-8859-15 \

es_GT.UTF-8/UTF-8 \

es_GT/ISO-8859-1 \

es_HN.UTF-8/UTF-8 \

es_HN/ISO-8859-1 \

es_MX.UTF-8/UTF-8 \

es_MX/ISO-8859-1 \

es_NI.UTF-8/UTF-8 \

es_NI/ISO-8859-1 \

es_PA.UTF-8/UTF-8 \

es_PA/ISO-8859-1 \

es_PE.UTF-8/UTF-8 \

es_PE/ISO-8859-1 \

es_PR.UTF-8/UTF-8 \

es_PR/ISO-8859-1 \

es_PY.UTF-8/UTF-8 \

es_PY/ISO-8859-1 \

es_SV.UTF-8/UTF-8 \

es_SV/ISO-8859-1 \

es_US.UTF-8/UTF-8 \

es_US/ISO-8859-1 \

es_UY.UTF-8/UTF-8 \

es_UY/ISO-8859-1 \

es_VE.UTF-8/UTF-8 \

es_VE/ISO-8859-1 \

et_EE.UTF-8/UTF-8 \

et_EE/ISO-8859-1 \

et_EE.ISO-8859-15/ISO-8859-15 \

eu_ES.UTF-8/UTF-8 \

eu_ES/ISO-8859-1 \

eu_ES@euro/ISO-8859-15 \

fa_IR/UTF-8 \

fi_FI.UTF-8/UTF-8 \

fi_FI/ISO-8859-1 \

fi_FI@euro/ISO-8859-15 \

fo_FO.UTF-8/UTF-8 \

fo_FO/ISO-8859-1 \

fr_BE.UTF-8/UTF-8 \

fr_BE/ISO-8859-1 \

fr_BE@euro/ISO-8859-15 \

fr_CA.UTF-8/UTF-8 \

fr_CA/ISO-8859-1 \

fr_CH.UTF-8/UTF-8 \

fr_CH/ISO-8859-1 \

fr_FR.UTF-8/UTF-8 \

fr_FR/ISO-8859-1 \

fr_FR@euro/ISO-8859-15 \

fr_LU.UTF-8/UTF-8 \

fr_LU/ISO-8859-1 \

fr_LU@euro/ISO-8859-15 \

ga_IE.UTF-8/UTF-8 \

ga_IE/ISO-8859-1 \

ga_IE@euro/ISO-8859-15 \

gd_GB.UTF-8/UTF-8 \

gd_GB/ISO-8859-15 \

gez_ER/UTF-8 \

gez_ER@abegede/UTF-8 \

gez_ET/UTF-8 \

gez_ET@abegede/UTF-8 \

gl_ES.UTF-8/UTF-8 \

gl_ES/ISO-8859-1 \

gl_ES@euro/ISO-8859-15 \

gu_IN/UTF-8 \

gv_GB.UTF-8/UTF-8 \

gv_GB/ISO-8859-1 \

he_IL.UTF-8/UTF-8 \

he_IL/ISO-8859-8 \

hi_IN/UTF-8 \

hr_HR.UTF-8/UTF-8 \

hr_HR/ISO-8859-2 \

hu_HU.UTF-8/UTF-8 \

hu_HU/ISO-8859-2 \

id_ID.UTF-8/UTF-8 \

id_ID/ISO-8859-1 \

is_IS.UTF-8/UTF-8 \

is_IS/ISO-8859-1 \

it_CH.UTF-8/UTF-8 \

it_CH/ISO-8859-1 \

it_IT.UTF-8/UTF-8 \

it_IT/ISO-8859-1 \

it_IT@euro/ISO-8859-15 \

iw_IL.UTF-8/UTF-8 \

iw_IL/ISO-8859-8 \

ja_JP.EUC-JP/EUC-JP \

ja_JP.UTF-8/UTF-8 \

ka_GE.UTF-8/UTF-8 \

ka_GE/GEORGIAN-PS \

kk_KZ.UTF-8/UTF-8 \

kk_KZ/PT154 \

kl_GL.UTF-8/UTF-8 \

kl_GL/ISO-8859-1 \

kn_IN/UTF-8 \

ko_KR.EUC-KR/EUC-KR \

ko_KR.UTF-8/UTF-8 \

kw_GB.UTF-8/UTF-8 \

kw_GB/ISO-8859-1 \

lg_UG.UTF-8/UTF-8 \

lg_UG/ISO-8859-10 \

lo_LA/UTF-8 \

lt_LT.UTF-8/UTF-8 \

lt_LT/ISO-8859-13 \

lv_LV.UTF-8/UTF-8 \

lv_LV/ISO-8859-13 \

mi_NZ.UTF-8/UTF-8 \

mi_NZ/ISO-8859-13 \

mk_MK.UTF-8/UTF-8 \

mk_MK/ISO-8859-5 \

ml_IN/UTF-8 \

mn_MN/UTF-8 \

mr_IN/UTF-8 \

ms_MY.UTF-8/UTF-8 \

ms_MY/ISO-8859-1 \

mt_MT.UTF-8/UTF-8 \

mt_MT/ISO-8859-3 \

nb_NO.UTF-8/UTF-8 \

nb_NO/ISO-8859-1 \

ne_NP/UTF-8 \

nl_BE.UTF-8/UTF-8 \

nl_BE/ISO-8859-1 \

nl_BE@euro/ISO-8859-15 \

nl_NL.UTF-8/UTF-8 \

nl_NL/ISO-8859-1 \

nl_NL@euro/ISO-8859-15 \

nn_NO.UTF-8/UTF-8 \

nn_NO/ISO-8859-1 \

oc_FR.UTF-8/UTF-8 \

oc_FR/ISO-8859-1 \

om_ET/UTF-8 \

om_KE.UTF-8/UTF-8 \

om_KE/ISO-8859-1 \

pa_IN/UTF-8 \

pl_PL.UTF-8/UTF-8 \

pl_PL/ISO-8859-2 \

pt_BR.UTF-8/UTF-8 \

pt_BR/ISO-8859-1 \

pt_PT.UTF-8/UTF-8 \

pt_PT/ISO-8859-1 \

pt_PT@euro/ISO-8859-15 \

ro_RO.UTF-8/UTF-8 \

ro_RO/ISO-8859-2 \

ru_RU.KOI8-R/KOI8-R \

ru_RU.UTF-8/UTF-8 \

ru_RU/ISO-8859-5 \

ru_UA.UTF-8/UTF-8 \

ru_UA/KOI8-U \

se_NO/UTF-8 \

sid_ET/UTF-8 \

sk_SK.UTF-8/UTF-8 \

sk_SK/ISO-8859-2 \

sl_SI.UTF-8/UTF-8 \

sl_SI/ISO-8859-2 \

so_DJ.UTF-8/UTF-8 \

so_DJ/ISO-8859-1 \

so_ET/UTF-8 \

so_KE.UTF-8/UTF-8 \

so_KE/ISO-8859-1 \

so_SO.UTF-8/UTF-8 \

so_SO/ISO-8859-1 \

sq_AL.UTF-8/UTF-8 \

sq_AL/ISO-8859-1 \

sr_CS.UTF-8/UTF-8 \

sr_CS/ISO-8859-5 \

st_ZA.UTF-8/UTF-8 \

st_ZA/ISO-8859-1 \

sv_FI.UTF-8/UTF-8 \

sv_FI/ISO-8859-1 \

sv_FI@euro/ISO-8859-15 \

sv_SE.UTF-8/UTF-8 \

sv_SE/ISO-8859-1 \

ta_IN/UTF-8 \

te_IN/UTF-8 \

tg_TJ.UTF-8/UTF-8 \

tg_TJ/KOI8-T \

th_TH.UTF-8/UTF-8 \

th_TH/TIS-620 \

ti_ER/UTF-8 \

ti_ET/UTF-8 \

tig_ER/UTF-8 \

tl_PH.UTF-8/UTF-8 \

tl_PH/ISO-8859-1 \

tr_TR.UTF-8/UTF-8 \

tr_TR/ISO-8859-9 \

tt_RU.UTF-8/UTF-8 \

uk_UA.UTF-8/UTF-8 \

uk_UA/KOI8-U \

ur_PK/UTF-8 \

uz_UZ/ISO-8859-1 \

uz_UZ@cyrillic/UTF-8 \

vi_VN/UTF-8 \

wa_BE/ISO-8859-1 \

wa_BE@euro/ISO-8859-15 \

wa_BE.UTF-8/UTF-8 \

xh_ZA.UTF-8/UTF-8 \

xh_ZA/ISO-8859-1 \

yi_US.UTF-8/UTF-8 \

yi_US/CP1255 \

zh_CN.GB18030/GB18030 \

zh_CN.GBK/GBK \

zh_CN.UTF-8/UTF-8 \

zh_CN/GB2312 \

zh_HK.UTF-8/UTF-8 \

zh_HK/BIG5-HKSCS \

zh_SG.UTF-8/UTF-8 \

zh_SG.GBK/GBK \

zh_SG/GB2312 \

zh_TW.EUC-TW/EUC-TW \

zh_TW.UTF-8/UTF-8 \

zh_TW/BIG5 \

zu_ZA.UTF-8/UTF-8 \

zu_ZA/ISO-8859-1 \

root:/sources/glibc-build# make localedata/install-locales

make -r PARALLELMFLAGS="" CVSOPTS="" -C ../glibc-2.3.6 objdir=`pwd` localedata/install-locales

make[1]: Entering directory `/sources/glibc-2.3.6'

make -C localedata install-locales

make[2]: Entering directory `/sources/glibc-2.3.6/localedata'

.././scripts/mkinstalldirs /usr/lib/locale

aa_DJ.UTF-8... done

aa_DJ.ISO-8859-1... done

aa_ER.UTF-8... done

aa_ER.UTF-8@saaho... done

aa_ET.UTF-8... done

af_ZA.UTF-8... done

af_ZA.ISO-8859-1... done

am_ET.UTF-8... done

an_ES.UTF-8... done

an_ES.ISO-8859-15... done

ar_AE.UTF-8... done

ar_AE.ISO-8859-6... done

ar_BH.UTF-8... done

ar_BH.ISO-8859-6... done

ar_DZ.UTF-8... done

ar_DZ.ISO-8859-6... done

ar_EG.UTF-8... done

ar_EG.ISO-8859-6... done

ar_IN.UTF-8... done

ar_IQ.UTF-8... done

ar_IQ.ISO-8859-6... done

ar_JO.UTF-8... done

ar_JO.ISO-8859-6... done

ar_KW.UTF-8... done

ar_KW.ISO-8859-6... done

ar_LB.UTF-8... done

ar_LB.ISO-8859-6... done

ar_LY.UTF-8... done

ar_LY.ISO-8859-6... done

ar_MA.UTF-8... done

ar_MA.ISO-8859-6... done

ar_OM.UTF-8... done

ar_OM.ISO-8859-6... done

ar_QA.UTF-8... done

ar_QA.ISO-8859-6... done

ar_SA.UTF-8... done

ar_SA.ISO-8859-6... done

ar_SD.UTF-8... done

ar_SD.ISO-8859-6... done

ar_SY.UTF-8... done

ar_SY.ISO-8859-6... done

ar_TN.UTF-8... done

ar_TN.ISO-8859-6... done

ar_YE.UTF-8... done

ar_YE.ISO-8859-6... done

az_AZ.UTF-8... done

be_BY.UTF-8... done

be_BY.CP1251... done

bg_BG.UTF-8... done

bg_BG.CP1251... done

bn_BD.UTF-8... done

bn_IN.UTF-8... done

br_FR.UTF-8... done

br_FR.ISO-8859-1... done

br_FR.ISO-8859-15@euro... done

bs_BA.UTF-8... done

bs_BA.ISO-8859-2... done

byn_ER.UTF-8... done

ca_ES.UTF-8... done

ca_ES.ISO-8859-1... done

ca_ES.ISO-8859-15@euro... done

cs_CZ.UTF-8... done

cs_CZ.ISO-8859-2... done

cy_GB.UTF-8... done

cy_GB.ISO-8859-14... done

da_DK.UTF-8... done

da_DK.ISO-8859-1... done

de_AT.UTF-8... done

de_AT.ISO-8859-1... done

de_AT.ISO-8859-15@euro... done

de_BE.UTF-8... done

de_BE.ISO-8859-1... done

de_BE.ISO-8859-15@euro... done

de_CH.UTF-8... done

de_CH.ISO-8859-1... done

de_DE.UTF-8... done

de_DE.ISO-8859-1... done

de_DE.ISO-8859-15@euro... done

de_LU.UTF-8... done

de_LU.ISO-8859-1... done

de_LU.ISO-8859-15@euro... done

el_GR.UTF-8... done

el_GR.ISO-8859-7... done

en_AU.UTF-8... done

en_AU.ISO-8859-1... done

en_BW.UTF-8... done

en_BW.ISO-8859-1... done

en_CA.UTF-8... done

en_CA.ISO-8859-1... done

en_DK.UTF-8... done

en_DK.ISO-8859-1... done

en_GB.UTF-8... done

en_GB.ISO-8859-1... done

en_HK.UTF-8... done

en_HK.ISO-8859-1... done

en_IE.UTF-8... done

en_IE.ISO-8859-1... done

en_IE.ISO-8859-15@euro... done

en_IN.UTF-8... done

en_NZ.UTF-8... done

en_NZ.ISO-8859-1... done

en_PH.UTF-8... done

en_PH.ISO-8859-1... done

en_SG.UTF-8... done

en_SG.ISO-8859-1... done

en_US.UTF-8... done

en_US.ISO-8859-1... done

en_ZA.UTF-8... done

en_ZA.ISO-8859-1... done

en_ZW.UTF-8... done

en_ZW.ISO-8859-1... done

es_AR.UTF-8... done

es_AR.ISO-8859-1... done

es_BO.UTF-8... done

es_BO.ISO-8859-1... done

es_CL.UTF-8... done

es_CL.ISO-8859-1... done

es_CO.UTF-8... done

es_CO.ISO-8859-1... done

es_CR.UTF-8... done

es_CR.ISO-8859-1... done

es_DO.UTF-8... done

es_DO.ISO-8859-1... done

es_EC.UTF-8... done

es_EC.ISO-8859-1... done

es_ES.UTF-8... done

es_ES.ISO-8859-1... done

es_ES.ISO-8859-15@euro... done

es_GT.UTF-8... done

es_GT.ISO-8859-1... done

es_HN.UTF-8... done

es_HN.ISO-8859-1... done

es_MX.UTF-8... done

es_MX.ISO-8859-1... done

es_NI.UTF-8... done

es_NI.ISO-8859-1... done

es_PA.UTF-8... done

es_PA.ISO-8859-1... done

es_PE.UTF-8... done

es_PE.ISO-8859-1... done

es_PR.UTF-8... done

es_PR.ISO-8859-1... done

es_PY.UTF-8... done

es_PY.ISO-8859-1... done

es_SV.UTF-8... done

es_SV.ISO-8859-1... done

es_US.UTF-8... done

es_US.ISO-8859-1... done

es_UY.UTF-8... done

es_UY.ISO-8859-1... done

es_VE.UTF-8... done

es_VE.ISO-8859-1... done

et_EE.UTF-8... done

et_EE.ISO-8859-1... done

et_EE.ISO-8859-15... done

eu_ES.UTF-8... done

eu_ES.ISO-8859-1... done

eu_ES.ISO-8859-15@euro... done

fa_IR.UTF-8... done

fi_FI.UTF-8... done

fi_FI.ISO-8859-1... done

fi_FI.ISO-8859-15@euro... done

fo_FO.UTF-8... done

fo_FO.ISO-8859-1... done

fr_BE.UTF-8... done

fr_BE.ISO-8859-1... done

fr_BE.ISO-8859-15@euro... done

fr_CA.UTF-8... done

fr_CA.ISO-8859-1... done

fr_CH.UTF-8... done

fr_CH.ISO-8859-1... done

fr_FR.UTF-8... done

fr_FR.ISO-8859-1... done

fr_FR.ISO-8859-15@euro... done

fr_LU.UTF-8... done

fr_LU.ISO-8859-1... done

fr_LU.ISO-8859-15@euro... done

ga_IE.UTF-8... done

ga_IE.ISO-8859-1... done

ga_IE.ISO-8859-15@euro... done

gd_GB.UTF-8... done

gd_GB.ISO-8859-15... done

gez_ER.UTF-8... done

gez_ER.UTF-8@abegede... done

gez_ET.UTF-8... done

gez_ET.UTF-8@abegede... done

gl_ES.UTF-8... done

gl_ES.ISO-8859-1... done

gl_ES.ISO-8859-15@euro... done

gu_IN.UTF-8... done

gv_GB.UTF-8... done

gv_GB.ISO-8859-1... done

he_IL.UTF-8... done

he_IL.ISO-8859-8... done

hi_IN.UTF-8... done

hr_HR.UTF-8... done

hr_HR.ISO-8859-2... done

hu_HU.UTF-8... done

hu_HU.ISO-8859-2... done

id_ID.UTF-8... done

id_ID.ISO-8859-1... done

is_IS.UTF-8... done

is_IS.ISO-8859-1... done

it_CH.UTF-8... done

it_CH.ISO-8859-1... done

it_IT.UTF-8... done

it_IT.ISO-8859-1... done

it_IT.ISO-8859-15@euro... done

iw_IL.UTF-8... done

iw_IL.ISO-8859-8... done

ja_JP.EUC-JP... done

ja_JP.UTF-8... done

ka_GE.UTF-8... done

ka_GE.GEORGIAN-PS... done

kk_KZ.UTF-8... done

kk_KZ.PT154... done

kl_GL.UTF-8... done

kl_GL.ISO-8859-1... done

kn_IN.UTF-8... done

ko_KR.EUC-KR... done

ko_KR.UTF-8... done

kw_GB.UTF-8... done

kw_GB.ISO-8859-1... done

lg_UG.UTF-8... done

lg_UG.ISO-8859-10... done

lo_LA.UTF-8... done

lt_LT.UTF-8... done

lt_LT.ISO-8859-13... done

lv_LV.UTF-8... done

lv_LV.ISO-8859-13... done

mi_NZ.UTF-8... done

mi_NZ.ISO-8859-13... done

mk_MK.UTF-8... done

mk_MK.ISO-8859-5... done

ml_IN.UTF-8... done

mn_MN.UTF-8...locales/mn_MN:221: LC_TIME: syntax error

done

mr_IN.UTF-8... done

ms_MY.UTF-8... done

ms_MY.ISO-8859-1... done

mt_MT.UTF-8... done

mt_MT.ISO-8859-3... done

nb_NO.UTF-8... done

nb_NO.ISO-8859-1... done

ne_NP.UTF-8... done

nl_BE.UTF-8... done

nl_BE.ISO-8859-1... done

nl_BE.ISO-8859-15@euro... done

nl_NL.UTF-8... done

nl_NL.ISO-8859-1... done

nl_NL.ISO-8859-15@euro... done

nn_NO.UTF-8... done

nn_NO.ISO-8859-1... done

oc_FR.UTF-8... done

oc_FR.ISO-8859-1... done

om_ET.UTF-8... done

om_KE.UTF-8... done

om_KE.ISO-8859-1... done

pa_IN.UTF-8... done

pl_PL.UTF-8... done

pl_PL.ISO-8859-2... done

pt_BR.UTF-8... done

pt_BR.ISO-8859-1... done

pt_PT.UTF-8... done

pt_PT.ISO-8859-1... done

pt_PT.ISO-8859-15@euro... done

ro_RO.UTF-8... done

ro_RO.ISO-8859-2... done

ru_RU.KOI8-R... done

ru_RU.UTF-8... done

ru_RU.ISO-8859-5... done

ru_UA.UTF-8... done

ru_UA.KOI8-U... done

se_NO.UTF-8... done

sid_ET.UTF-8...LC_ADDRESS: `lang_lib' value does not match `lang_term' value

done

sk_SK.UTF-8... done

sk_SK.ISO-8859-2... done

sl_SI.UTF-8... done

sl_SI.ISO-8859-2... done

so_DJ.UTF-8... done

so_DJ.ISO-8859-1... done

so_ET.UTF-8... done

so_KE.UTF-8... done

so_KE.ISO-8859-1... done

so_SO.UTF-8... done

so_SO.ISO-8859-1... done

sq_AL.UTF-8... done

sq_AL.ISO-8859-1... done

sr_CS.UTF-8... done

sr_CS.ISO-8859-5... done

st_ZA.UTF-8... done

st_ZA.ISO-8859-1... done

sv_FI.UTF-8... done

sv_FI.ISO-8859-1... done

sv_FI.ISO-8859-15@euro... done

sv_SE.UTF-8... done

sv_SE.ISO-8859-1... done

ta_IN.UTF-8... done

te_IN.UTF-8... done

tg_TJ.UTF-8... done

tg_TJ.KOI8-T... done

th_TH.UTF-8... done

th_TH.TIS-620... done

ti_ER.UTF-8... done

ti_ET.UTF-8... done

tig_ER.UTF-8... done

tl_PH.UTF-8... done

tl_PH.ISO-8859-1... done

tr_TR.UTF-8...LC_MONETARY: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217

done

tr_TR.ISO-8859-9...LC_MONETARY: value of field `int_curr_symbol' does not correspond to a valid name in ISO 4217

done

tt_RU.UTF-8... done

uk_UA.UTF-8... done

uk_UA.KOI8-U... done

ur_PK.UTF-8... done

uz_UZ.ISO-8859-1... done

uz_UZ.UTF-8@cyrillic... done

vi_VN.UTF-8... done

wa_BE.ISO-8859-1... done

wa_BE.ISO-8859-15@euro... done

wa_BE.UTF-8... done

xh_ZA.UTF-8... done

xh_ZA.ISO-8859-1... done

yi_US.UTF-8... done

yi_US.CP1255... done

zh_CN.GB18030... done

zh_CN.GBK... done

zh_CN.UTF-8... done

zh_CN.GB2312... done

zh_HK.UTF-8... done

zh_HK.BIG5-HKSCS... done

zh_SG.UTF-8... done

zh_SG.GBK... done

zh_SG.GB2312... done

zh_TW.EUC-TW... done

zh_TW.UTF-8... done

zh_TW.BIG5... done

zu_ZA.UTF-8... done

zu_ZA.ISO-8859-1... done

make[2]: Leaving directory `/sources/glibc-2.3.6/localedata'

make[1]: Leaving directory `/sources/glibc-2.3.6'

root:/sources/glibc-build#



接着使用localedef命令来创建和安装locales没有列在glibc-2.3.6/localedata/SUPPORTED中的(这种情况不太可能),如果需要他们的话。




9.2.配置Glibc


我们需要建立 /etc/nsswitch.conf 文件。因为在这个文件丢失或不正确的情况下,Glibc 会使用默认配置,而 Glibc 的默认配置无法很好地在网络环境下工作。并且我们也需要设置自己的时区。

使用如下命令建立一个新的 /etc/nsswitch.conf 文件:

cat > /etc/nsswitch.conf << "EOF"

# Begin /etc/nsswitch.conf


passwd: files

group: files

shadow: files


hosts: files dns

networks: files


protocols: files

services: files

ethers: files

rpc: files


# End /etc/nsswitch.conf

EOF


root:/sources/glibc-build# cat > /etc/nsswitch.conf << "EOF"

> # Begin /etc/nsswitch.conf

>

> passwd: files

> group: files

> shadow: files

>

> hosts: files dns

> networks: files

>

> protocols: files

> services: files

> ethers: files

> rpc: files

>

> # End /etc/nsswitch.conf

> EOF

root:/sources/glibc-build# cat /etc/nsswitch.conf

# Begin /etc/nsswitch.conf


passwd: files

group: files

shadow: files


hosts: files dns

networks: files


protocols: files

services: files

ethers: files

rpc: files


# End /etc/nsswitch.conf

root:/sources/glibc-build#




要想确定本地时区,可以使用下面的脚本:


root:/sources/glibc-build# tzselect

Please identify a location so that time zone rules can be set correctly.

Please select a continent or ocean.

1) Africa

2) Americas

3) Antarctica

4) Arctic Ocean

5) Asia

6) Atlantic Ocean

7) Australia

8) Europe

9) Indian Ocean

10) Pacific Ocean

11) none - I want to specify the time zone using the Posix TZ format.

#? 5

Please select a country.

1) Afghanistan 18) Israel 35) Palestine

2) Armenia 19) Japan 36) Philippines

3) Azerbaijan 20) Jordan 37) Qatar

4) Bahrain 21) Kazakhstan 38) Russia

5) Bangladesh 22) Korea (North) 39) Saudi Arabia

6) Bhutan 23) Korea (South) 40) Singapore

7) Brunei 24) Kuwait 41) Sri Lanka

8) Cambodia 25) Kyrgyzstan 42) Syria

9) China 26) Laos 43) Taiwan

10) Cyprus 27) Lebanon 44) Tajikistan

11) East Timor 28) Macau 45) Thailand

12) Georgia 29) Malaysia 46) Turkmenistan

13) Hong Kong 30) Mongolia 47) United Arab Emirates

14) India 31) Myanmar (Burma) 48) Uzbekistan

15) Indonesia 32) Nepal 49) Vietnam

16) Iran 33) Oman 50) Yemen

17) Iraq 34) Pakistan

#? 9

Please select one of the following time zone regions.

1) east China - Beijing, Guangdong, Shanghai, etc.

2) Heilongjiang

3) central China - Gansu, Guizhou, Sichuan, Yunnan, etc.

4) Tibet & most of Xinjiang Uyghur

5) southwest Xinjiang Uyghur

#? 1


The following information has been given:


China

east China - Beijing, Guangdong, Shanghai, etc.


Therefore TZ='Asia/Shanghai' will be used.

Local time is now: Mon Nov 13 22:32:41 CST 2006.

Universal Time is now: Mon Nov 13 14:32:41 UTC 2006.

Is the above information OK?

1) Yes

2) No

#? 1


You can make this change permanent for yourself by appending the line

TZ='Asia/Shanghai'; export TZ

to the file '.profile' in your home directory; then log out and log in again.


Here is that TZ value again, this time on standard output so that you

can use the /usr/bin/tzselect command in shell scripts:

Asia/Shanghai

root:/sources/glibc-build#




按照顺序回答脚本运行过程中提出的几个问题后,脚本就会给出所需时区文件的位置(比如 America/Edmonton)。还有其他的一些时区列在/usr/share/zoneinfo中,比如Canada/Eastern 或 EST5EDT,这些虽然没有被脚本识别,但是都可以使用。


再用下列命令来创建 /etc/localtime 文件:

cp -v --remove-destination /usr/share/zoneinfo/<xxx> \

/etc/localtime

将 <xxx> 替换成选择的时区的名称(比如,Canada/Eastern)。

cp 命令选项的含义:

--remove-destination

强制删除已存在的符号链接。我们采用拷贝文件而不是创建符号链接的原因是:有可能 /usr 在单独的分区上,如果启动进入单用户模式,就会出问题。


root:/sources/glibc-build# cp -v --remove-destination /usr/share/zoneinfo/Asia/Shanghai \

> /etc/localtime

`/usr/share/zoneinfo/Asia/Shanghai' -> `/etc/localtime'

root:/sources/glibc-build#





9.3.配置静态链接库加载程序

默认情况下,动态链接库加载程序(/lib/ld-linux.so.2)搜索 /lib 和 /usr/lib 目录来寻找程序需要使用的动态连接库。但是,如果某些库在这两个目录之外,你就需要把它们的路径加到 /etc/ld.so.conf 文件里,以便动态链接库加载程序能够找到它们。 /usr/local/lib 和 /opt/lib 是两个经常包含动态连接库但又不在默认目录中的目录,我们要把它们添加到动态链接库加载程序的搜索路径中。

使用如下命令创建新的 /etc/ld.so.conf 文件:

cat > /etc/ld.so.conf << "EOF"

# Begin /etc/ld.so.conf


/usr/local/lib

/opt/lib


# End /etc/ld.so.conf

EOF



root:/sources/glibc-build# cat > /etc/ld.so.conf << "EOF"

> # Begin /etc/ld.so.conf

>

> /usr/local/lib

> /opt/lib

>

> # End /etc/ld.so.conf

> EOF

root:/sources/glibc-build# cat /etc/ld.so.conf

# Begin /etc/ld.so.conf


/usr/local/lib

/opt/lib


# End /etc/ld.so.conf

root:/sources/glibc-build#




9.4.Glibc 的内容

安装的程序: catchsegv, gencat, getconf, getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump, zic

安装的库: ld.so, libBrokenLocale.{a,so}, libSegFault.so, libanl.{a,so}, libbsd-compat.a, libc.{a,so}, libcidn.so, libcrypt.{a,so}, libdl.{a,so}, libg.a, libieee.a, libm.{a,so}, libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.{a,so}, libresolv.{a,so}, librpcsvc.a, librt.{a,so}, libthread_db.so, libutil.{a,so}

简要描述

catchsegv

当程序发生段故障的时候,用来建立一个堆栈跟踪

gencat

建立消息列表

getconf

针对文件系统的指定变量显示其系统设置值

getent

从系统管理数据库获取一个条目

iconv

字符集转换

iconvconfig

建立快速加载的 iconv 模块所使用的配置文件

ldconfig

配置动态链接库的实时绑定

ldd

列出每个程序或者命令需要的共享库

lddlibc4

帮助 ldd 操作目标文件

locale

打印当前locale的详细信息

localedef

编译 locale 标准

mtrace

读取并解释一个内存跟踪文件然后以人类可读的格式显示一个摘要

nscd

为最常用的名称服务请求提供缓存的守护进程

nscd_nischeck

检查在进行 NIS+ 查找时是否需要安全模式

pcprofiledump

转储 PC profiling 产生的信息

pt_chown

一个辅助程序,帮助 grantpt 设置子虚拟终端的属主、用户组、读写权限

rpcgen

产生实现远程过程调用(RPC)协议的 C 代码

rpcinfo

对 RPC 服务器产生一个 RPC 呼叫

sln

ln 程序使用静态连接编译的版本,在 ln 不起作用的时候,sln 仍然可以建立符号链接

sprof

读取并显示共享目标的特征描述数据

tzselect

对用户提出关于当前位置的问题并输出时区信息到标准输出

xtrace

通过打印当前执行的函数跟踪程序执行情况

zdump

显示时区

zic

时区编译器

ld.so

帮助动态链接库执行的辅助程序

libBrokenLocale

帮助应用程序(如Mozilla)处理破损的 locale

libSegFault

段故障信号处理器

libanl

异步名称查询库

libbsd-compat

为了在 linux 下执行一些 BSD 程序,libbsd-compat 提供了必要的可移植性

libc

主 C 库,集成了最常用函数

libcidn

被Glibc使用,在getaddrinfo()函数中来处理国际域名

libcrypt

用于的加密库

libdl

动态连接接口库

libg

g++ 运行时库

libieee

IEEE 浮点运算库

libm

数学函数库

libmcheck

包括了启动(boot)时需要的代码

libmemusage

帮助 memusage 搜集程序运行时的内存占用信息

libnsl

提供网络服务的库

libnss

名称服务切换库,包含了解释主机名、用户名、组名、别名、服务、协议等等的函数

libpcprofile

包含用于跟踪某些特定源代码的 CPU 使用时间的 profiling 函数

libpthread

POSIX 线程库

libresolv

创建、发送、解释到互联网域名服务器的数据包

librpcsvc

提供 RPC 的其他杂项服务

librt

提供了大部分的 POSIX.1b 运行时扩展接口

libthread_db

对多线程程序的调试很有用

libutil

包含了在很多不同的 Unix 程序中使用的"标准"函数









相关阅读 更多 +
排行榜 更多 +
激萌手账

激萌手账

游戏工具 下载
躺平不要慌

躺平不要慌

音乐节奏 下载
嗨自拍修图

嗨自拍修图

图像拍照 下载