Имеется некая приблуда - компилятор+линкер. Она должна работать на всех пользовательских системах, рожая там исполняемые 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.
Вопрос: насколько всё это "политкорректно", кошерно, юних-вей и т.д.?
Какие могут быть проблемы?
Спасибо за внимание...