Версии libc связаны с версиями ядра?

Прочитав ответы на мой предыдущий вопрос , я пришел к выводу, что ответ на следующий вопрос - это то, что я действительно искал:

версии ядра требуют конкретной версии libc для правильной работы?

В основном моя проблема связана с созданием приложения на моей 12.04 Ubuntu и попыткой запустить его на 8.04. С тех пор я узнал от этого и других форумов stackexchange, что причиной этих проблем является обратная совместимость libc. Поэтому то, что я, возможно, наивно пытаюсь сделать, - это создать ту же версию libc, которая существует на моей цели, а затем ссылаться на нее на моем хосте, когда я создаю приложение. Затем в идеальном мире, когда я копирую это на хост, будучи привязанным к «правильному» libc, оно должно работать (по крайней мере, в моей голове). Я был совершенно не в состоянии найти способ установить более старую версию libc в моей системе, и мне было интересно, тесно ли связана каждая версия с версией ядра, отсюда и вышеупомянутый вопрос.

7
задан 13 April 2017 в 15:24

2 ответа

Требуется ли конкретной версии ядра для правильной работы определенная версия libc?

Да, если вы сами не собираете ядро ​​из исходного кода с помощью своего предпочтительная версия libc. Ядра Ubuntu построены на выпуске LTS перед целевым выпуском, поэтому «новейшими» ядрами Ubuntu, совместимыми с 8.04 libc, были ядра для Ubuntu 9.10.

0
ответ дан 13 April 2017 в 15:24

Они связаны друг с другом, в некотором роде.

  • Ядро, на котором вы работаете, было скомпилировано с определенной библиотекой libc.
  • Ваш libc был скомпилирован для поддержки только ядер выше определенной версии.

Поэтому, если вы устанавливаете пакеты ядра и пакеты libc из репозиториев Ubuntu, а не собираете их самостоятельно, вы сталкиваетесь с вышеуказанной дилеммой.

Что касается libc, один из способов сделать то, что вы предлагаете, - это скомпилировать ядро ​​12.04 из источника 8.04 , таким образом связав его с libc 8.04. Затем вы используете это пользовательское ядро ​​для загрузки 12.04, после чего вы компилируете версию libc 8.04, также из исходного кода. Вы устанавливаете это, и ваши приложения должны использовать ту же старую версию 8.04 libc.

Полагаю, вы также знаете, что любые другие библиотеки 12.04, с которыми связано ваше приложение, могут быть недоступны в 8.04, поэтому вам придется также компилировать их из исходного кода ...

Подводя итог, лучше просто скомпилировать на 8.04 .

0
ответ дан 13 April 2017 в 15:24

Другие вопросы по тегам:

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