Я установил Embedded Robot Coder, набор инструментов для разработки встроенных ARM-приложений, например, для кирпича Lego NXT, с использованием MATLAB в Windows. Он содержит Cygwin, утилиты GNUARM и так далее. Когда я пытаюсь скомпилировать мое приложение, генерация кода на C работает нормально, но при сборке возникает ошибка:

Compiling /cygdrive/C/MATLAB/2013/ecrobotnxt/environment/nxtOSEK/toppers_osek/kernel/alarm.c to alarm.o C:/cygwin64/GNUARM/bin/arm-elf-gcc.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory

Я открыл терминал Cygwin (но утилиты Cugwin также работают на Windows CMD) и запустил ldd на arm-elf-gcc.exe. Вывод следующий:

$ ldd ./arm-elf-gcc.exe ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7fff9c3e0000) ??? => ??? (0x778e0000) wow64.dll => /cygdrive/c/WINDOWS/System32/wow64.dll (0x77800000) wow64win.dll => /cygdrive/c/WINDOWS/System32/wow64win.dll (0x77860000)

Что делает ??? имею в виду? Я также использовал команду cygcheck . На Windows CMD вывод выглядит следующим образом:

C:\cygwin64\GNUARM\bin>cygcheck arm-elf-gcc.exe Found: arm-elf-gcc.exe arm-elf-gcc.exe

... но в Cygwin Terminal cygcheck вернул ошибку:

cygcheck.exe arm-elf-gcc.exe cygcheck: could not find 'arm-elf-gcc.exe'

Во время установки Cygwin я пропустил много вещей просто для экономии времени и места, но я проверил все необходимые пакеты для набора инструментов ECR.

ПРИМЕЧАНИЕ. Этот вопрос относится к конкретному набору инструментов Matlab и Lego, но я задаю его здесь, поскольку он использует общие механизмы Linux/Cygwin.

1 ответ1

0

Я нашел обходной путь. Я установил 32-битную, а не 64-ю версию Cygwin, и все работает. Возможно, проблема была связана с компилятором GNUARM, который "чувствует себя хорошо" с 32-битной архитектурой. Как указал @matzeri, проблемные библиотеки используют 32-битные зависимости Windows.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .