GCCが動作を停止したのはなぜですか?

GCCが動作を停止したのはなぜですか?

私はフォローしましたこのチュートリアル次のコマンドを使用して ChromeOS で GCC コンパイラを有効にする方法を示します。

sudo /usr/share/vboot/bin/make_dev_ssd.sh --remove_rootfs_verification --partitions 2
sudo mount -i -o remount,exec /home/chronos/user/
export C_INCLUDE_PATH=~/Toolchain/usr/include/
export LD_LIBRARY_PATH=~/Toolchain/usr/lib:~/Toolchain/usr/lib/binutils/armv7a-hardfloat-linux-gnueabi/2.25.1/
export PATH=$PATH:~/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/gcc-bin/4.9.3/:~/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.25.1/
sudo sed -i 's/\/usr/\/home\/chronos\/user\/Toolchain\/usr/g' ~/Toolchain/usr/lib/libc.so

実行すると、シェルインスタンスが終了するまでソースファイルをコンパイルできます。後でシェルに戻ると、ソースでコンパイルしようとするすべての試行は./configure失敗します。

インスタンスが終了した後にエクスポートされた変数が失われたようです。以前と同じコマンドを実行してみましたが、コンパイル能力が元に戻せないほど失われたようです。

このconfig.logストリームで次のエラーが発生します。

configure:3378: checking whether the C compiler works
configure:3400: gcc    conftest.c  >&5
/home/chronos/user/Toolchain/usr/armv7a-hardfloat-linux-gnueabi/binutils-bin/2.25.1/ld: cannot find /home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/usr/lib/libc_nonshared.a
collect2: error: ld returned 1 exit status
configure:3404: $? = 1
configure:3442: result: no

その過程で非常に奇妙なことが起こりました...

cannot find /home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/home/chronos/user/Toolchain/usr/lib/libc_nonshared.a

この問題を解決するために、限られたLinuxの知識をすべて使い果たしたようです。誰もが何が起こっているのかについての洞察を提供できますか?

ベストアンサー1

問題は、sedこの方法で再利用しても共有オブジェクトファイルに追加され続けることです~/Toolchain/usr/lib/libc.so。そのため、最初に実行した後にファイルパスが破損します。

パスが破損している場合は、ファイルに移動してその内容を手動でlibc.so次のように変更してください。

/* GNU ld script
   Use the shared library, but some functions are only in
   the static library, so try that secondarily.  */
OUTPUT_FORMAT(elf32-littlearm)

GROUP ( /lib/libc.so.6 /home/chronos/user/Toolchain/usr/lib/libc_nonshared.a  AS_NEEDED ( /lib/ld-linux-armhf.so.3 ) )

問題は、シェルが閉じたときに戻った後にコンパイルを続行するには、これらのフラグを再実行することがexport重要であることです。する迷う。シェルの初期化時にフラグを設定するより永続的な解決策が見つかるまで、これを行う必要があります~/.bashrc

おすすめ記事