Не могу скомпилировать мои старые проекты (с помощью gcc)

У меня сломан компилятор C при использовании CLion с yocto SDK, но он отлично работает на eclipse Oxygen, Это ошибка в компиляторе:

    CMake Error at /home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/share/cmake-3.7/Modules/CMakeTestCCompiler.cmake:51 (message):
      The C compiler
      "/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc"
      is not able to compile a simple test program.

И это ошибка журнала:

/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find crt1.o: No such file or directory
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find crti.o: No such file or directory
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find crtbegin.o: No such file or directory
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find -lgcc
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find -lgcc_s
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find -lc
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find -lgcc
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find -lgcc_s
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find crtend.o: No such file or directory
/home/developer/yocto_SDK2/toolchain2/sysroots/x86_64-pokysdk-linux/usr/libexec/arm-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/6.4.0/real-ld: cannot find crtn.o: No such file or directory

Я также настроил пути вручную, и это было хорошо. [![введите описание изображения здесь][1]][1] введите описание изображения здесь

Кто-нибудь знает, как решить эту проблему для компилятора gcc?

1 ответ

Решение

Итак, после исследования, проб и сбоя всех возможных вариантов, я нашел следующий ответ: Очевидно, что Clion не может обнаружить компиляторы, пока я source а также cmake перед запуском Clion он мог перенаправлять компиляторы на компиляторы Yocto, а не обнаруживать хост-компиляторы. Итак, я создал следующий скрипт Bash, который запускает упомянутые команды.

Sourcing setup_sdk следующим образом:

#!/bin/bash

# define root paths
export SDK_TC_ROOT=~/yocto_sdk/toolchain
# source yocto sdk stuff
source ${SDK_TC_ROOT}/environment-setup-cortexa9hf-neon-poky-linux-gnueabi

Затем я запустил следующий код bash, чтобы убедиться, что установка выполняется правильно перед запуском Clion

#!/bin/bash

PATH_TO_Clion=~/clion/bin
# setup env
source setup_sdk
cmake ./
# start Clion with all variables
$PATH_TO_Clion/clion.sh

Затем Clion автоматически обнаружил компиляторы, не определяя их вручную, что привело к упомянутой проблеме компилятора C.

Стоит отметить, что Clion почему-то не принимает - параметр при определении параметров Cmake в CMAKE_TOOLCHAIN_FILE=, Как это скомпилировано и построено правильно для меня.

У меня была аналогичная проблема. Однако мой случай немного сложнее. Мне нужно переключаться между набором инструментов по умолчанию (x86) и yocto cross-compile toolchain (ARM), чтобы скомпилировать один и тот же проект.

Я пришел к следующему решению:

  1. Создайте сценарий bash, который вызывает сценарий, инициализирующий Yocto env, а затем вызывает cmake:
#!/bin/bash
source ~/yocto_sdk/toolchain/environment-setup-cortexa9hf-neon-poky-linux-gnueabi; bash -c "cmake $(printf ' %q' "$@")" C
  1. Создайте новую цепочку инструментов со сценарием CMake.

  1. Затем вы можете переключаться между цепочкой инструментов по умолчанию и yocto во время работы.
Другие вопросы по тегам