3

私のホスト システムは Linux debian 2.6.32-5-amd64 #1 SMP Mon Feb 25 00:26:11 UTC 2013 x86_64 GNU/Linux です。LFS をビルドしたいのですが、glibc のコンパイルが原因でできなくなりました。これがエラープロンプトです、ありがとう。

/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os): 関数 `getanswer' 内:
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:180: `__stack_chk_guard' への未定義の参照
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:483: `__stack_chk_guard' への未定義の参照
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os): 関数 `res_gethostbyaddr' 内:
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:644: `__stack_chk_guard' への未定義の参照
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:783: `__stack_chk_guard' への未定義の参照
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os): 関数 `__GI_res_gethostbyname2' 内:
/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:510: `__stack_chk_guard' への未定義の参照
/mnt/lfs/sources/glibc-build/resolv/libresolv_pic.a(gethnamaddr.os):/mnt/lfs/sources/glibc-2.17/resolv/gethnamaddr.c:636: `__stack_chk_guard' への未定義参照がさらに続く
collect2: エラー: ld が 1 つの終了ステータスを返しました
make[2]: *** [/mnt/lfs/sources/glibc-build/resolv/libresolv.so] エラー 1
make[2]: ディレクトリ `/mnt/lfs/sources/glibc-2.17/resolv' を離れます
make[1]: *** [解決/その他] エラー 2
make[1]: ディレクトリ `/mnt/lfs/sources/glibc-2.17' を離れます
make: *** [すべて] エラー 2
4

2 に答える 2

3

この問題を解決する解決策を見つけました:

gcc の最初のパスの前に、gcc ソースで次の sed によって修正されました。

sed -i '/k prot/agcc_cv_libc_provides_ssp=yes' gcc/configure

と:

sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c

しかし、これらはすでに LFS マニュアルで言及されています。LFS を使い始めたときになぜそれらを見なかったのかわかりません :D

于 2014-12-22T11:15:09.877 に答える
1

gcc でスタック保護が有効になっています。

このエラーを回避するには:

CFLAGS="-fno-stack-protector -O2" ./configure --prefix=/somepath

私のシステムで私が実行した:

mkdir ビルド

CDビルド

CFLAGS="-fno-stack-protector -O2" ../configure --prefix=/usr/test_glibc

于 2013-11-05T17:02:30.953 に答える