Из подробного руководства для ping (8)
-I interface address
Set source address to specified interface address. Argument may
be numeric IP address or name of device. When pinging IPv6 link-
local address this option is required.
Очевидно, что такая машина не имеет ресурсов и не предназначена для целей разработки.
Для таких задач вы не можете компилировать вслепую в собственной архитектуре вашего (Intel) Debian, которая явно является чуждой архитектурой/бинарными файлами для вашего маленького сервера.
Вам необходимо создать цепочку инструментов кросс-компилятора (кросс) на удаленной машине/в вашем Debian 7, которая компилирует исходные коды, генерирующие двоичные файлы для целевой архитектуры.
Обычно кросс-инструментарий может иметь определенные шаги для установки и может потребовать некоторых настроек для вашей среды.
Кросс-компилятор — это компилятор, способный создавать исполняемый код для платформа, отличная от той, на которой работает компилятор.
Кросс-компилятор необходим для компиляции для нескольких платформ из одна машина. Платформа может оказаться невозможной для запуска компилятора, например, для микроконтроллера встроенной системы, потому что те системы не содержат операционной системы.
В качестве примера,
Как создать кросс-компилятор GCC
В качестве другого примера, я однажды установил кросс-компилятор в Debian для NetBSD/ARM; или, например, если мне нужны двоичные файлы для моего openwrt/32-битного MIPS, я должен получить среду кросс-компиляции, которая соответствует uClib и 32-битному MIPS — мой маршрутизатор на основе MIP имеет только 96 МБ ОЗУ и 128 МБ (или 256 МБ). ?) вспышки.
Говоря об этом, некоторые среды встроенных/малых маршрутизаторов используют uClib вместо glibc для экономии места, поскольку uClib намного меньше, чем glibc.
uClibc — небольшая стандартная библиотека C. предназначен для операционных систем на основе ядра Linux для встраиваемых систем и мобильные устройства.
uClibc в основном написан с нуля, но включает код из glibc и другие проекты.
uClibc — это оболочка системных вызовов ядра Linux и μClinux. uClibc намного меньше, чем glibc, библиотека C обычно используется с дистрибутивами Linux. Хотя glibc предназначен для полного поддерживать все соответствующие стандарты C в широком спектре оборудования и платформы ядра, uClibc специально ориентирован на встроенный Linux. Функции могут быть включены или отключены в соответствии с требованиями к пространству.
Часто у вас также есть busybox, заменяющий и предоставляющий вам чистую версию двоичных утилит, которые есть в Linux, например. вы заметите, например, что ls
и find
отличаются друг от друга, менее мощны и имеют меньше возможностей для использования.
BusyBox — это программное обеспечение, предоставляющее несколько упрощённых инструментов Unix в один исполняемый файл. Он работает в различных средах POSIX. таких как Linux, Android[7] и FreeBSD[8], хотя многие инструменты он предоставляет, предназначены для работы с интерфейсами, предоставляемыми Linux ядро. Он был специально создан для встраиваемых операционных систем. с очень ограниченными ресурсами.
Различия здесь также не заканчиваются. Вместо Апача у вас могла быть Люси; и вместо OpenSSH Dropbear SSH.
Dropbear — это относительно небольшой SSH-сервер и клиент.Дропбер это особенно полезно для «встроенных» систем Linux (или других Unix), такие как беспроводные маршрутизаторы.
У вас также будет сильно урезанное ядро Linux, причем не обязательно последней версии. В некоторых китайских платах он также может быть несколько «запилен» для поддержки нестандартного оборудования, и вы (и часто производитель) не сможете перекомпилировать его для более новых версий.
Боюсь, вам придется немного больше изучить среду вашей маленькой машины; Я также надеюсь, что этот ответ поможет вам понять, что он не предназначен для работы со встроенным Linux во всех отношениях, как с полноценным сервером Linux.
Как всегда, помимо инструментов, необходимо в них разбираться.
Если у вас достаточно места для хранения, вы можете расширить оперативную память путем подкачки.
Для Ubuntu:
sudo fallocate -l 4G /swapfile && sudo chmod 600 /swapfile && sudo
mkswap /swapfile && sudo swapon /swapfile && sudo nano /etc/fstab
/swapfile none swap
sw 0 0
Скомпилировать без ошибок ОЗУ. Удачи!