Версии libc связаны с версиями ядра?
Прочитав ответы на мой предыдущий вопрос, я пришел к выводу, что на самом деле я искал ответ на следующий вопрос:
Требуется ли для конкретной версии ядра определенная версия libc для правильной работы?
В основном моя проблема связана с созданием приложения на моей 12.04 Ubuntu и попыткой запустить его на 8.04. С тех пор я узнал от этого и других форумов stackexchange, что причиной этих проблем является обратная совместимость libc. Поэтому то, что я, возможно, наивно пытаюсь сделать, - это создать ту же версию libc, которая существует на моей цели, а затем ссылаться на нее на моем хосте при создании приложения. Затем в идеальном мире, когда я копирую это на хост, будучи привязанным к "правильному" libc, оно должно работать (по крайней мере, в моей голове). Я был совершенно не в состоянии найти способ установить более старую версию libc в моей системе, и мне было интересно, тесно ли связана каждая версия с версией ядра, отсюда и вышеупомянутый вопрос.
2 ответа
Требуется ли для конкретной версии ядра определенная версия libc для правильной работы?
Да, если вы сами не соберете ядро из исходных текстов с предпочитаемой вами версией libc. Ядра Ubuntu построены на выпуске LTS перед целевым выпуском, поэтому "новейшими" ядрами Ubuntu, совместимыми с 8.04 libc, были ядра для Ubuntu 9.10.
Они связаны друг с другом, в некотором роде.
- Ядро, на котором вы работаете, было скомпилировано с определенной библиотекой 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.