LFSが直面したいくつかの問題の作成LFS

5770 ワード

1.chroot後は新しい端末を開かないでください.使えません.システムをクラッシュさせる可能性があります.また、寝る必要がある場合は、再起動後に/devと仮想カーネルファイルシステムを再マウントしてマウントし、chrootを再実行するには、次のコマンドをスクリプトとして保存し、再起動後に実行します.
mount /dev/sda9 /mnt/lfs
mount -v --bind /dev $LFS/dev
mount -vt devpts devpts $LFS/dev/pts
mount -vt proc proc $LFS/proc
mount -vt sysfs sysfs $LFS/sys
if [ -h $LFS/dev/shm ]; then
  link=$(readlink $LFS/dev/shm)
  mkdir -p $LFS/$link
  mount -vt tmpfs shm $LFS/$link
  unset link
else
  mount -vt tmpfs shm $LFS/dev/shm
fi

chroot "$LFS" /tools/bin/env -i \
    HOME=/root                  \
    TERM="$TERM"                \
    PS1='\u:\w\$ '              \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
    /tools/bin/bash --login +h

2 Linux apiヘッダファイルをインストールし、make mrproperを実行中にエラーが発生しました.
make: /bin/sh: Command not found
Makefile:579: /sources/linux-3.10/arch//Makefile: No such file or directory make: gcc: Command not found
リンクの追加:
ln -sf /bin/bash /bin/sh
ln -sv /tools/lib/ld-linux.so.2 /lib/ld-linux.so.2

(後でリンクの追加が間違っていることに気づいたようで、コピーすべきです)
3.この中国語版ドキュメントに提供されたMan-pagesパッケージのダウンロードアドレスが無効になりました.これまでこのパッケージにダウンロードしていませんでしたが、ここでダウンロードできます.Man-pagesとMan-DBを一つにしないでください.
4.glibcテストの後grep Error glibc-check-logを実行し、次のエラーを表示します.
make[2]: [/sources/glibc-build/posix/annexc.out] Error 1 (ignored)
make[2]: *** [/sources/glibc-build/nptl/tst-cancel4.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancel5.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancelx4.out] Error 1
make[2]: *** [/sources/glibc-build/nptl/tst-cancelx5.out] Error 1
make[1]: *** [nptl/tests] Error 2
make[2]: [/sources/glibc-build/conform/run-conformtest.out] Error 1 (ignored)
と文書で宣言された無視可能なエラーは一致しませんが、無視しても問題はありません.
常用中国語領域データ:
localedef -i zh_CN -f GB18030 zh_CN
localedef -i zh_CN -f GBK zh_CN
localedef -i zh_CN -f UTF-8 zh_CN
localedef -i zh_CN -f GB2312 zh_CN
localedef -i zh_HK -f UTF-8 zh_CN
localedef -i zh_HK -f BIG5-HKSCS zh_CN
localedef -i zh_TW -f EUC-TW zh_CN
localedef -i zh_TW -f UTF-8 zh_CN
localedef -i zh_TW -f BIG5 zh_CN

5.binutilsパッケージ、makeエラー:
make[2]: *** [info-recursive] Error 1
make[2]: Leaving directory `/sources/binutils-build/bfd'
make[1]: *** [all-bfd] Error 2
make[1]: Leaving directory `/sources/binutils-build'
make: *** [all] Error 2
make clean,make distclean,もう一度やり直して、意外にもよくなった
6.gccをインストールし、インストールテストに成功した後、
echo 'main(){}' > dummy.c
cc dummy.c -v -Wl,--verbose &> dummy.log
readelf -l a.out | grep ': /lib'
は出力があるはずですが、私は持っていません.しかし、後ろのいくつかの検査は正常です.
7.coreutils,makeエラー:
help2man: can't get '--help' info from man/expr.td/expr
make[2]: *** [man/expr.1] Error 127
make[2]: Leaving directory `/sources/coreutils-8.21'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/sources/coreutils-8.21'
make: *** [all] Error 2

これはちょっと面倒で、エラーの原因は上のgccのところにあるかもしれませんが、dummy関数のテストは出力されていませんが、再びgccから始めるのは面倒です.ここの投稿を参照して、私は解決策をまとめました.間違っている可能性があります.
実行
expr --help
出力は大体
./expr: error while loading shared libraries: libgmp.so.10: cannot open shared object file: No such file or directory
説明libgmpをロードする.so.10この共有ライブラリでエラーが発生しました.coreutls-8.21ディレクトリで実行します.
ldd src/expr
の出力は次のようになります.
linux-vdso.so.1 (0x00007fffad9a9000)
libgmp.so.10 => not found
libc.so.6 =>/tools/lib/libc.so.6
前の章のように自分でリンクを追加しました
mv -v /usr/lib/libgmp.so.10* /lib/
ln -sfv /lib/libgmp.so.10 /usr/lib/libgmp.so.10

その後makeは通過しました.
しかしldconfig-vチェックを実行するには問題があり、前の1つ(状況によって異なります):
ldconfig: Cannot stat/usr/lib/libncursesw.so: No such file or directory ldconfig: Cannot stat/usr/lib/libgmp.so:No such file or directory次の2つのコマンドで修復します.
ln -sfv /lib/libncursesw.so.5 /usr/lib/libncursesw.so
ln -sfv /lib/libgmp.so.10 /usr/lib/libgmp.so

8.bashのインストール、makeエラー:
/bin/sh: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
make: [install] Error 127 (ignored)

またダイナミックライブラリの問題です
ln -sv /lib/libncursesw.so.5 /tools/lib/libncursesw.so.5

9.gettext-0.18.3、makeエラー:
make[4]: Entering directory `/sources/gettext-0.18.1.3/gettext-tools/src'
/bin/sh ../libtool  --tag=CC   --mode=link gcc -std=gnu99  -g -O2   -o msgcmp msgcmp-msgcmp.o msgcmp-msgl-fsearch.o libgettextsrc.la  -lm  
libtool: link: cannot find the library `/mnt/lfs/sources/gettext-0.18.1.3/gettext-tools/gnulib-lib/libgettextlib.la' or unhandled argument `/mnt/lfs/sources/gettext-0.18.1.3/gettext-tools/gnulib-lib/libgettextlib.la'
make[4]: *** [msgcmp] Error 1
make[4]: Leaving directory `/sources/gettext-0.18.1.3/gettext-tools/src'

これは悲しい問題で、それは私に以前多くの間違いをしたことを認識させました......話が長いので、この憎らしい教訓を見てみましょう.lfsの準備段階で、このパッケージをコンパイルしたことがありますが、当時は削除していませんでしたが、今回は使用して、問題が発生しました.ソースパッケージを削除し、コンパイルを再解凍します.
10.iproute 2-3.9.0のコンパイル、makeエラー:
lnstat.c: In function 'build_hdr_string':
lnstat.c:169:30: error: argument to 'sizeof' in 'memset' call is the same expression as the destination; did you mean to provide an explicit length? [-Werror=sizeof-pointer-memaccess]
   memset(th.hdr[i], 0, sizeof(th.hdr[i]));

ソースコードの問題、ここをクリックしてpatchをダウンロードします.リファレンス
11.sysvinitのコンパイル、このsedコマンドエラー
sed -i -e 's/utmpdump/d' \
       -e '/mountpoint/d' src/Makefile

sed: -e expression #1, char 12: unterminated `s' command
あのsを外せばいい