Compiling
為什麼 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
一旦執行,我就可以一直編譯源文件,直到我的 shell 實例終止。一旦我稍後返回 shell,所有通過原始碼編譯的嘗試都會
./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 的有限知識來解決這個問題。有沒有人能夠提供一些關於發生了什麼的見解?
問題是當你
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 ) )
麻煩的是,當 shell 關閉時,如果您希望在返回後繼續編譯,則必須重新執行
export
標誌,因為這些標誌確實會失去,這一點很重要。您需要這樣做,直到您尋求一個更永久的解決方案,該解決方案在 shell 初始化時建立標誌,即 via~/.bashrc
。