Предвидеть «слишком старое ядро» между версиями ядра 2.6.16 и 2.6.26

Я создаю приложение на машине под управлением Linux (Debian) с ядром 2.6.26-2-amd64 и хочу чтобы запустить это приложение на другой машине под управлением Linux (Suse) с ядром 2.6.16.60-0.21-smp, но я получаю сообщение об ошибке «FATAL: ядро ​​слишком старое».

Я знаю из исследований в Интернете, что это может произойти при сборке против библиотеки glibc, которая не была скомпилирована для поддержки старых версий ядра, но обычно это касается версии 2.4. Возможно ли получить такие ошибки для ядра той же серии (2.6) или это может быть что-то еще?

Кроме того, я прочитал, что решение этой проблемы состоит в том, чтобы пересобрать приложение для другой версии glibc, скомпилированной с соответствующими - -enable-kernel = ВЕРСИЯ параметр. В качестве альтернативы вы можете просто динамически связать свое приложение с glibc для решения проблемы?

Спасибо за вашу помощь.

ОБНОВЛЕНИЕ : Я понимаю, что мой вопрос может показаться расплывчатым или решенным одним из уже упомянутых решений (динамическое связывание, построение на другой [виртуальной] системе, восстановление glibc [что кажется довольно сложным, учитывая комментарии, которые я читал по этому поводу]), но в конечном итоге я ищу способы предотвратить такие проблемы.

Например, это можно ли найти, какие версии ядра Linux совместимы с конкретной сборкой glibc?

ОБНОВЛЕНИЕ 2 : в конце концов я нашел исходный патч для glibc (для Debian, но я думаю, в Интернете есть похожие документы для других дистрибутивов) это (я полагаю) содержит информацию, которую я искал.

С этой страницы :

--- eglibc-2.11.2.orig/debian/sysdeps/linux.mk
+++ eglibc-2.11.2/debian/sysdeps/linux.mk
@@ -0,0 +1,51 @@
[...]
+MIN_KERNEL_SUPPORTED := 2.6.18
[...]
+# Minimum Kernel supported
+with_headers = --with-headers=$(shell pwd)/debian/include
--enable-kernel=$(call xx,MIN_KERNEL_SUPPORTED)
[...]

Что объясняет ошибку "слишком старое ядро". Надеюсь, это поможет другим.

16
задан Aabaz 10 August 2011 в 14:10
поделиться