Я следовал этому руководству, в котором показано, как можно включить компилятор GCC на ChromeOS, для чего используются следующие команды ниже.
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, чтобы решить эту проблему. Может ли кто-нибудь дать мне некоторое представление о том, что происходит?
Проблема заключается в том, что, когда вы повторно используете 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
, поскольку эти do теряются. Вам нужно делать это до тех пор, пока вы не найдете более постоянное решение, которое устанавливает флаги при инициализации оболочки, то есть через ~ / .bashrc
.