Учтите следующее: у меня есть файл c ++. Я использую машину RHEL6 для компиляции кода. Но я хочу, чтобы мой исполняемый / двоичный файл также мог работать на RHEL4. Теперь я испытал следующие 3 случая:
- Если я скомпилирую простой файл c ++ на RHEL6 с gcc версии 4.4.7, я не смогу выполнить его на машине RHEL4. Ошибка
ошибка при загрузке разделяемых библиотек: требуется динамический компоновщик glibc 2.5 или новее
Решение этой проблемы можно найти в gcc: уменьшить требуемую версию libc. После исправления я могу запустить двоичный файл на RHEL4.
Если я компилирую (на RHEL6 с той же версией gcc) со статическими библиотеками, я могу выполнить его на машине RHEL4. Нет необходимости использовать
-Wl,--hash-style=both
, как в случае 1.Если я компилирую свой проект (вместо одного файла) на RHEL6, я получаю следующую ошибку при запуске двоичного файла на платформе RHEL4.
/lib64/libc.so.6: версия `GLIBC_2.7 'не найдена
У меня вопрос:
а) Почему не возникает ошибка при статическом связывании библиотек.
б) В чем разница между ошибками, возникающими в случае 1 и случае 3.