Имеется некая приблуда - компилятор+линкер. Она должна работать на всех пользовательских системах, рожая там исполняемые ELF-файлы и ELF shared libraries. В число требований входит, чтобы её продукты работали на всех линуксах.
Проблема в том, что её продукты используют некоторые функции из glibc, libpthread, etc. Обычно при линковке на endudser системах символы из glibc версионируются той версией, которая имеется на пользовательской системе. Скажем, foo@GLIBC_2.3.2 - запросто на SuSE 9.2. Так что эта программа не будет работать на SuSE 8.2, где стоит glibc 2.2.5, поскольку там нет foo@GLIBC_2.3.2, но есть foo@GLIBC_2.2.5.
Для обхождения сей неприятности предлагается собрать gcc-ом маленькую библиотечку, примерно такого вида:
void printf() {}
void strlen() {}
void _exit() {}
....
и т.д.
На enduser-машине линковаться к этой библиотечке. Таким образом слинкованная прилада при запуске засосёт нужный символ из /lib/libc.so.6 на _любой_ системе.
Для повышения надёжности сей схемы можно при сборке этой маленькой библиотечки-посредника заиспользовать version-скрипт со старыми версиями символов. Можно их набрать из сырцов glibc от того же SuSE8.2. Таким образом прилада всегда будет гарантированно работать на любой системе выше чем SuSE8.2.
Вопрос: насколько всё это "политкорректно", кошерно, юних-вей и т.д.?
Какие могут быть проблемы?
Спасибо за внимание...
Ответ на:
комментарий
от aton
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Кошерный способ распространять APK кому положено (2019)
- Форум Как избавиться от привязки к glibc? (2018)
- Форум подскажите более кошерный способ сбилдить убунтушный кернел? (2013)
- Форум Кошерный способ перенести базу MySQL с мёртвой системы? (2019)
- Форум [100% способ] как избавиться от глюков в вашем дистрибутиве (2010)
- Форум Можно ли как-нибудь избавиться от зависимости от новой версии glibc? (2013)
- Форум [opera] есть ли кошерный способ вставить текст в буфер обмена из js? (2010)
- Форум Самый кошерный и не зависимый от сторонних библиотек способ посчитать количество физических процессоров в Linux (2016)
- Форум Darkest Dungeon или какой в 2020 наиболее лёгкий способ запустить приложение с glibc версии выше системной? (2020)
- Статьи Как кушать вилкой. ... или о fork() в двух словах (2023)