Почему GCC перестает работать?

Я следовал этому руководству, в котором показано, как можно включить компилятор 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, чтобы решить эту проблему. Может ли кто-нибудь дать мне некоторое представление о том, что происходит?

0
18.10.2016, 15:36
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 , поскольку эти do теряются. Вам нужно делать это до тех пор, пока вы не найдете более постоянное решение, которое устанавливает флаги при инициализации оболочки, то есть через ~ / .bashrc .

1
28.01.2020, 02:47

Теги

Похожие вопросы