为什么 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

一旦执行,我就可以编译源文件,直到我的 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 知识来解决这个问题。有谁能够提供一些有关正在发生的事情的见解吗?

答案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 ) )

问题是,当 shell 关闭时,如果您希望在返回后继续编译,则必须重新运行这些export标志,这一点很重要迷路。您需要这样做,直到您寻求更永久的解决方案,该解决方案在 shell 初始化时建立标志,即通过~/.bashrc.

相关内容