Я создал статическую версию qt и загрузил статическую версию glibc. Теперь я хотел бы связать glibc статически с моим приложением qt. Я знаю о переходе в .pro и добавлении строки LIBS + = -L path / to / static_lib, но мне интересно, достаточно ли этого? Будет ли он по-прежнему связывать glibc статически, даже если ОС, на которой я работаю, также имеет динамические библиотеки? Причина, по которой я делаю это, - развернуть приложение в автономном режиме. (После установки и обновления Red Hat 5.3 glibc_2.9 на целевом компьютере не обнаружена)
Как я могу связать glibc статически с qt
Ответы (2)
Передача -static
в gcc заставит его статически связываться, когда это возможно.
Или загрузите и установите CentOS 5 и используйте его.
person
Ignacio Vazquez-Abrams
schedule
19.03.2010
Значит, построение на Cent OS сделает двоичный файл совместимым с большим количеством дистрибутивов?
- person yan bellavance; 19.03.2010
CentOS двоично-совместима с RHEL.
- person Ignacio Vazquez-Abrams; 19.03.2010
Спасибо, я не знал об этом. Думаю, еще лучше было бы строить прямо из RHEL, у меня один работает в офисе. Кроме того, я слышал, что статическое связывание libc - нетривиальная задача, это подразумевает статическое связывание всего и есть некоторые последствия во время выполнения. После статической компоновки libc я получил несколько предупреждений от make, и когда я запустил его на RHEL, я получил ошибку сегментации
- person yan bellavance; 19.03.2010
цитата из trilithium.com/johan/2005/06/static-libstdc говорит: проблема не столько в статическом связывании libstdc ++ - в конце концов, это всего лишь библиотека, - а в поддержке времени выполнения, требуемой кодом C ++ в целом, для включения таких функций, как RTTI и обработка исключений.
- person yan bellavance; 19.03.2010
ps: собираюсь проголосовать за вас, как только закончится мой кулдаун для голосования: P
- person yan bellavance; 19.03.2010
Как вы обнаружили, полностью статическое связывание с glibc невозможно, потому что, например, поддержка nss загружается динамически. Однако требуемая версия glibc в основном зависит от функций, которые вы действительно используете.
В любом случае, я думаю, вам следует вместо этого использовать Linux Standard Base, а также по причинам, указанным здесь.
person
Blaisorblade
schedule
01.05.2010