Являются ли версии libc привязаны к версиям ядра?

7

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

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

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

задан mathematician1975 12.07.2012 в 08:41
источник

2 ответа

4
  

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

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

    
ответ дан izx 12.07.2012 в 09:05
источник
3

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

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

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

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

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

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

    
ответ дан Bogie 12.07.2012 в 08:54