Что лучший способ состоит в том, чтобы создать программное обеспечение, которое не требует новейшего glibc?

Я пытаюсь создать двоичный пакет, который может быть выполнен на нескольких дистрибутивах 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?

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

8
задан ZorbaTHut 4 May 2010 в 20:22
поделиться

2 ответа

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

5
ответ дан 5 December 2019 в 22:16
поделиться

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

1
ответ дан 5 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

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