Генерируется с LTO версии 6.0 вместо ожидаемой 8.1

Я выполнил инструкции по установке movesense для Windows [1] и выполнил приведенную ниже команду cmake, которая, похоже, работает нормально. Однако, когда я запускаю команду ninja, она не работает на шаге 9/9, жалуясь, что версия LTO не соответствует конфигурации. Любой совет?

$ cmake -G Ninja -DMOVESENSE_CORE_LIBRARY=../MovesenseCoreLib/ -DCMAKE_TOOLCHAIN_FILE=../MovesenseCoreLib/toolchain/gcc-nrf52.cmake ../samples/blinky_app/

Ошибка:

[9/9] Связывание исполняемого файла CXX Movesense FAILED: Movesense cmd.exe / C "cd. && C: \ PROGRA ~ 2 \ GNUTOO ~ 1 \ 92019- ~ 1 \ bin \ AR19DD ~ 1.EXE -W -Wall -Werror -Wfatal-errors -Wshadow -Wpointer-arith -Wcast-qual -Wwrite-strings -Wunreachable-code -Wsign-compare -Wno-aggregate-return -Wno-unused-parameter -Wno-unused-function -Wno-cast-align -Wno-strict-aliasing -Wno-might-uninitialized -mthumb -mcpu = cortex-m4 -mfloat-abi = hard -mfpu = fpv4-sp-d16 -fno-common -ffreestanding -fno-builtin -mapcs -gdwarf-3 -std = gnu ++ 11 -ffunction-section -fdata-section -fno-rtti -fno-exceptions -fno-unwind-tables -fno-use-cxa-atexit -fno-threadsafe-statics -Wno-lto-type- mismatch -Wno-old-style-Declaration -Wno-discarded-qualifiers -Wp, -w -Wno-write-strings -U__INT32_TYPE__ -D__INT32_TYPE __ = int -U__UINT32_TYPE__ -D__UINT32_TYPE __ = "unsigned int" -flto -fno-fat объекты -Os -g -DWB_UNITTEST_BUILD -Wl, - wrap -Wl, _malloc_r -Wl, - wrap -Wl, _calloc_r -Wl, - wrap -Wl, _free_r -Wl, - wrap -Wl, _realloc_r --specs = nano.specs --spe cs = nosys.specs -Wl, -Map -Wl, target.map -Wl, - gc-section -Wl, -static -LC: / Users / user / Desktop / Repositories / Clones / movesense-device-lib / MovesenseCoreLib /app-build/compiler/../platform/nRF5x/linker/gcc -fuse-linker-plugin -flto -TC: / Users / user / Desktop / Repositories / Clones / movesense-device-lib / MovesenseCoreLib / app-build /compiler/../platform/nRF5x/linker/gcc/appflash.ld CMakeFiles / Movesense.dir / App.cpp.obj CMakeFiles / Movesense.dir / BlinkyClient.cpp.obj CMakeFiles / Movesense.dir / created / sbem-code /sbem_definitions.cpp.obj CMakeFiles / Movesense.dir / created / app-resources / resources.cpp.obj CMakeFiles / Movesense.dir / app-metadata / metadata.cpp.obj -o Movesense C: / Users / user / Desktop / Репозитории / Клоны / movesense-device-lib / MovesenseCoreLib / lib / GCCARM / libmovesense-coreD.a -lm -lstdc ++ && cd. " lto1.exe: фатальная ошибка: поток байт-кода в файле 'C: /Users/user/Desktop/Repositories/Clones/movesense-device-lib/MovesenseCoreLib/lib/GCCARM/libmovesense-coreD.a', созданный с помощью LTO версии 6.0 вместо ожидаемая версия 8.1 компиляция прекращена. lto-wrapper.exe: фатальная ошибка: C: \ PROGRA ~ 2 \ GNUTOO ~ 1 \ 92019- ~ 1 \ bin \ AR19DD ~ 1.EXE возвратил 1 статус выхода, компиляция прекращена. c: / program ~ 2 / gnutoo ~ 1 / 92019- ~ 1 / bin /../ lib / gcc / arm-none-eabi / 9.2.1 /../../../../ arm-none -eabi / bin / ld.exe: ошибка: lto-wrapper не удалось collect2.exe: ошибка: ld вернул 1 статус выхода ниндзя: сборка остановлена: подкоманда не удалась.

GCC --version 8.2.0
cmake --version 3.16.3
ninja --version 1.10.0
nrfutil --help

Единственная часть установки, которую я не уверен, прошла хорошо, - это установка «Visual Studio Redistributable 2015», в которой говорилось, что у меня более новая версия, и я не знал, как проверить, что этот шаг был выполнен правильно.


Теперь я также пробовал то же самое, используя «Решение Vagrant», и ошибка, которую я получаю на последнем шаге, когда я набираю ninja dfupkg, выглядит следующим образом:

ОТКАЗ: Movesense: && / usr / bin / arm-none-eabi-gcc -W -Wall -Werror -Wfatal-errors -Wshadow -Wpointer-arith -Wcast-qual -Wwrite-strings -Wunreachable-code -Wsign-compare - Wno-aggregate-return -Wno-unused-parameter -Wno-unused-function -Wno-cast-align -Wno-strict-aliasing -Wno-might-uninitialized -mthumb -mcpu = cortex-m4 -mfloat-abi = hard - mfpu = fpv4-sp-d16 -fno-common -ffreestanding -fno-builtin -mapcs -gdwarf-3 -std = gnu ++ 11 -ffunction-section -fdata-section -fno-rtti -fno-exceptions -fno-unwind -tables -fno-use-cxa-atexit -fno-threadsafe-statics -Wno-lto-type-mismatch -Wno-old-style-Declaration -Wno-discarded-qualifiers -Wp, -w -Wno-write-strings - U__INT32_TYPE__ -D__INT32_TYPE __ = int -U__UINT32_TYPE__ -D__UINT32_TYPE __ = "целое без знака" -flto -fno-fat-lto-objects -Os -O3 -DNDEBUG -Wl, - wrap -Wl, _malloc_r -Wl -Wl, - wrap -Wl, _free_r -Wl, - wrap -Wl, _realloc_r --specs = nano.specs --specs = nosys.specs -Wl, -Map -Wl, target.map -Wl, - gc-разделы -Wl, -static -L / vagrant / movesens e-device-lib / MovesenseCoreLib / app-build / compiler /../ platform / nRF5x / linker / gcc -fuse-linker-plugin -flto -T / vagrant / movesense-device-lib / MovesenseCoreLib / app-build / compiler /../platform/nRF5x/linker/gcc/appflash.ld CMakeFiles / Movesense.dir / App.cpp.obj CMakeFiles / Movesense.dir / BlinkyClient.cpp.obj CMakeFiles / Movesense.dir / created / sbem-code / sbem_definitions .cpp.obj CMakeFiles / Movesense.dir / created / app-resources / resources.cpp.obj CMakeFiles / Movesense.dir / app-metadata / metadata.cpp.obj -o Movesense / vagrant / movesense-device-lib / MovesenseCoreLib / lib / GCCARM / libmovesense-core.a -lm -lstdc ++ &&: lto1: внутренняя ошибка компилятора: поток байт-кода: ожидаемый тег round_div_expr вместо reference_type. Отправьте полный отчет об ошибке с предварительно обработанным исходным кодом, если это необходимо. См. Инструкции в https://gcc.gnu.org/bugs/. lto-wrapper: фатальная ошибка: / usr / bin / arm-none-eabi-gcc вернул 1 статус выхода, компиляция завершена. /usr/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld: error: lto-wrapper не удалось collect2: error: ld возвратил 1 статус выхода ниндзя: сборка остановлена: подкоманда не удалась.

[1] https://bitbucket.org/suunto/movesense-device-lib/src/master/


person Tiago Redaelli    schedule 30.01.2020    source источник


Ответы (1)


Похоже, вы пытаетесь скомпилировать код с неправильной версией компилятора (gcc 9.2.1) c:/progra~2/gnutoo~1/92019-~1/bin/../lib/gcc/arm-none-eabi/9.2.1/../../../../arm-none-eabi/bin/ld.exe, вам следует установить версию 2017q4 инструментальной цепочки компилятора.

Vagrant не обновлен (вероятно, это неправильная версия компилятора), поэтому я рекомендую не использовать его, или вам нужно сильно изменить его самостоятельно.

person dense    schedule 31.01.2020