Error sh: 1: read: arg count

Как определить проблему?

file cross_compiled_executable

Содержит что-то вроде:

interpreter /lib/ld-uClibc.so.0

и проблема в том, что этот файл не существует на целевом устройстве.

Как решить проблему?

Используйте правильный компилятор,либо:

  • Человек, создавший образ диска, должен предоставить вам кросс-компилятор или точно рассказать, как его собрать, например. с поперечным инструментом -нг . Как его получить для RPI спрашивали здесь .
  • скомпилируйте свой собственный образ и кросс-компилятор, например. с Buildroot . Вот общий пример QEMU . Buildroot имеет поддержку RPI .
  • используйте собственный компилятор на цели. Но обычно цели намного медленнее, чем ваш хост, и ограничены в пространстве, поэтому вы, вероятно, не захотите этого делать.

    Вы также можете использовать функциональный эмулятор, такой как QEMU, для сборки, а затем запускать программы только на более медленной платформе, например. gem5 или медленная доска.

Просто взломать interpreterпотенциально недостаточно, в частности, вы должны обеспечить бинарную совместимость между программой и целевой libc или интерфейсами программы и ядра (, системными вызовами, /procи т. д. ), если вы пытаетесь использовать-static(целевое ядро ​​может быть слишком старым и не содержать необходимых интерфейсов ). Единственное надежное решение — использовать правильную цепочку инструментов.

3
21.04.2020, 09:15
1 ответ

Стандартная утилита readпринимает как минимум одно имя переменной.

Некоторые реализации оболочки readиспользуют переменную по умолчанию , например REPLY, для хранения прочитанных данных, если имя не указано, но dash, стремясь быть оболочкой, совместимой с POSIX, не не (, так как это не требуется по стандарту ). Эквивалентом в оболочке dashбудет

read REPLY

Оболочка bash, даже в режиме POSIX, поддерживает некоторые не -функции POSIX. Это один из них, что означает, что readбез имени переменной будет работать, даже если вы запустите оболочку bash --posix.

Полный список того, что происходит, когда вы включаете режим POSIX в bash(, к которому этот вопрос на самом деле не относится ), см. вhttps://www.gnu.org/software/bash/manual/html_node/Bash-POSIX-Mode.html

10
19.03.2021, 02:27

Теги

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