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