Настройка более ранней версии минимального ядра при составлении статических библиотек
-
12-10-2019 - |
Вопрос
Мое распределение (Arch Linux) недавно увеличила минимальную версию Linux ядра для своего инструмента. Я собираю веб -приложение, которое я связываю статически, а затем загружаю на веб -сервер, а версия ядра на веб -сервере слишком старая для статических библиотек, составленных с новым инструментом. (Я получаю ошибку сегментации, когда пытаюсь запустить статические двоичные файлы на сервере.) Есть ли способ компилировать приложения с использованием инструментального оборудования GNU (GCC, Binutils, Glibc), так что функции, требующие более новых версий ядра?
Решение
Совместимость GLIBC действительно гарантирована только в одном направлении. (Старые двоичные файлы работают над более новыми системами; наоборот, не обязательно так.)
Чтобы гарантировать, что ваши двоичные файлы работают над более старыми системами, компилируют связь со старым GLIBC. Самый простой способ сделать это - найти более старое распространение, но я бы порекомендовал настроить ""Crosstool«Или аналогичный перекрестный компилирование инструментов, нацеленная на другой LIBC, чем то, что использует ваша система сборки (и это позволяет повторять сборки между хостами независимо от того, что такое система).
Другие советы
Спасибо. Я также нашел вариант-inable-kernel для Glibc, который позволяет работать с более ранними ядрами.