Почему ядро убивает мой процесс с disown, когда я выхожу из системы?

Нет. Двоичные файлы должны быть (пере) скомпилированы для целевой архитектуры, а Linux «из коробки» не предлагает ничего похожего на толстые двоичные файлы . Причина в том, что код скомпилирован в машинный код для конкретной архитектуры, а машинный код сильно различается между большинством семейств процессоров (например, ARM и x86 сильно различаются).

РЕДАКТИРОВАТЬ: стоит отметить, что некоторые архитектуры предлагают уровни обратной совместимости (и даже реже совместимости с другими архитектурами); на 64-битных процессорах обычно имеется обратная совместимость с 32-битными выпусками (но помните: ваши зависимые библиотеки также должны быть 32-битными, включая вашу стандартную библиотеку C, если только вы не связываете статически). Также стоит упомянуть Itanium , где можно было запускать код x86 (только 32-разрядный), хотя и очень медленно; низкая скорость выполнения кода x86 была, по крайней мере, одной из причин, по которой он не был очень успешным на рынке.

Имейте в виду, что вы по-прежнему не можете использовать двоичные файлы, скомпилированные с новыми инструкциями на старых процессорах, даже в режимах совместимости (например, вы не можете использовать AVX в 32-битном двоичном формате на процессорах Nehalem x86 ; ЦП просто не поддерживает это.

Обратите внимание, что модули ядра должны быть скомпилированы для соответствующей архитектуры; кроме того, 32-разрядные модули ядра не будут работать с 64-разрядными ядрами и наоборот.

Для получения информации о кроссе -компилировать двоичные файлы (так что вам не нужно иметь набор инструментов на целевом устройстве ARM), см. исчерпывающий ответ Grochmal ниже.

3
21.01.2016, 21:00
0 ответов

Теги

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