Я думаю, что это ошибка связывания в Geany с нанопи M1
Как твои дела?. У меня большая проблема (или, по крайней мере, я не знаю, как ее решить) с Джани, использующей Джесси Debian в нанопи M1.
История такова:
Я пытаюсь запустить некоторый модифицированный демонстрационный код, который поставляется с Nanopi M1 для управления портами GPIO, поэтому, когда я пытался "собрать" программу после компиляции, она показывает следующие ошибки:
В функции main это говорит:
/tmp/ccwWOISx.o in function 'main'
...... undefined reference to 'boardinit'
...... undefined reference to 'pintoGPIO'
...... undefined reference to 'openHW'
...... undefined reference to 'selectHW'
...... undefined reference to 'readHW'
...... undefined reference to 'closeHW'
......
......
and about two or tree more errors of the same type "undefined reference" all
related a functions of the hardware
Я использую GCC, команды пришли предварительно заряжены в Geany и являются:
Обобщение:
gcc -Wall -c "%f"
Телосложение:
gcc -Wall -o "%f" "%e"
поэтому я думаю (если я понял, что я прочитал в других статьях в stackru), это ошибка компоновки, но я не знаю, как ее решить.
после этого я изменил команду Build так:
gcc -Wall -c -o "%f" "%e"
Это сделано для того, чтобы не иметь ошибок, но сгенерированный файл теперь имеет тип "объектный код" (это неправильно), потому что мне нужны "исполняемые" файлы (без расширения), и терминал выдает следующее сообщение:
bash: ./Matrix-ir_receiver: cannot execute binary file: Exec format error
Я понятия не имею, как решить эту проблему, пожалуйста, помогите!
1 ответ
Как я уже сказал, это была проблема компоновщика, мне нужно было использовать опции -lfahw и -lm для сборки исполняемого файла. Я думаю, что первый вариант специфичен для устройства ARM; после этого программа работает без нареканий.