Установка более ранней минимальной версии ядра при компиляции статических библиотек - PullRequest
2 голосов
/ 22 декабря 2010

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

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

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

Чтобы гарантировать, что ваши двоичные файлы работают на старых системах, скомпилируйте линковку с более старым glibc. Самый простой способ сделать это - найти более старый дистрибутив, но я бы порекомендовал установить " crosstool " или аналогичный кросс-компилирующий набор инструментов, ориентированный на другой libc, чем тот, который использует ваша система сборки (и это позволяет повторяемые сборки на разных хостах независимо от того, что это за система).

0 голосов
/ 29 декабря 2010

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

...