Каков наилучший способ создания программного обеспечения, которое не требует новейшего glibc? - PullRequest
8 голосов
/ 04 мая 2010

Я пытаюсь создать бинарный пакет, который может быть запущен в нескольких дистрибутивах Linux. В настоящее время он построен на Ubuntu 10.04, но не работает на Ubuntu 8.04 со следующей ошибкой:

./test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./test)
./test: /usr/lib/libstdc.so.6: version `GLIBC_2.11' not found (required by ./test)

Какой способ решения этой проблемы предпочтителен? Есть ли способ установить старый glibc на новый компьютер и создать его, или мне нужно использовать старый дистрибутив? И если я соберу против старого glibc, будет ли он работать на новом glibc?

Или, альтернативно, есть ли какие-нибудь удобные флаги компилятора или пакеты, которые я мог бы установить, чтобы решить проблему?

Ответы [ 2 ]

5 голосов
/ 05 мая 2010

Лучшее решение, которое я нашел, - это установить виртуальную машину со стабильной версией Debian и использовать ее.Стабильная версия Debian достаточно старая, поэтому любые пакеты, созданные с ее помощью, будут работать в любом другом дистрибутиве на основе Debian, например Ubuntu.Возможно, вам придется обойти некритические ошибки, которые были исправлены в более поздних версиях различного программного обеспечения, но не перенесены в стабильную версию Debian.

1 голос
/ 05 мая 2010

Если вы действительно хотите убедиться, что он запускается в каждом последнем выпуске, вы можете также рассмотреть возможность статической привязки к выбранной вами libC. Однако вы можете столкнуться с проблемами, если используете функции, которые предоставляются только новыми ядрами (например, более новые системные вызовы).

...