Настройка более ранней версии минимального ядра при составлении статических библиотек

StackOverflow https://stackoverflow.com/questions/4506654

Вопрос

Мое распределение (Arch Linux) недавно увеличила минимальную версию Linux ядра для своего инструмента. Я собираю веб -приложение, которое я связываю статически, а затем загружаю на веб -сервер, а версия ядра на веб -сервере слишком старая для статических библиотек, составленных с новым инструментом. (Я получаю ошибку сегментации, когда пытаюсь запустить статические двоичные файлы на сервере.) Есть ли способ компилировать приложения с использованием инструментального оборудования GNU (GCC, Binutils, Glibc), так что функции, требующие более новых версий ядра?

Это было полезно?

Решение

Совместимость GLIBC действительно гарантирована только в одном направлении. (Старые двоичные файлы работают над более новыми системами; наоборот, не обязательно так.)

Чтобы гарантировать, что ваши двоичные файлы работают над более старыми системами, компилируют связь со старым GLIBC. Самый простой способ сделать это - найти более старое распространение, но я бы порекомендовал настроить ""Crosstool«Или аналогичный перекрестный компилирование инструментов, нацеленная на другой LIBC, чем то, что использует ваша система сборки (и это позволяет повторять сборки между хостами независимо от того, что такое система).

Другие советы

Спасибо. Я также нашел вариант-inable-kernel для Glibc, который позволяет работать с более ранними ядрами.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top