Как я могу связать glibc статически с qt

Я создал статическую версию qt и загрузил статическую версию glibc. Теперь я хотел бы связать glibc статически с моим приложением qt. Я знаю о переходе в .pro и добавлении строки LIBS + = -L path / to / static_lib, но мне интересно, достаточно ли этого? Будет ли он по-прежнему связывать glibc статически, даже если ОС, на которой я работаю, также имеет динамические библиотеки? Причина, по которой я делаю это, - развернуть приложение в автономном режиме. (После установки и обновления Red Hat 5.3 glibc_2.9 на целевом компьютере не обнаружена)


person yan bellavance    schedule 19.03.2010    source источник


Ответы (2)


Передача -static в gcc заставит его статически связываться, когда это возможно.

Или загрузите и установите CentOS 5 и используйте его.

person Ignacio Vazquez-Abrams    schedule 19.03.2010
comment
Значит, построение на Cent OS сделает двоичный файл совместимым с большим количеством дистрибутивов? - person yan bellavance; 19.03.2010
comment
CentOS двоично-совместима с RHEL. - person Ignacio Vazquez-Abrams; 19.03.2010
comment
Спасибо, я не знал об этом. Думаю, еще лучше было бы строить прямо из RHEL, у меня один работает в офисе. Кроме того, я слышал, что статическое связывание libc - нетривиальная задача, это подразумевает статическое связывание всего и есть некоторые последствия во время выполнения. После статической компоновки libc я получил несколько предупреждений от make, и когда я запустил его на RHEL, я получил ошибку сегментации - person yan bellavance; 19.03.2010
comment
цитата из trilithium.com/johan/2005/06/static-libstdc говорит: проблема не столько в статическом связывании libstdc ++ - в конце концов, это всего лишь библиотека, - а в поддержке времени выполнения, требуемой кодом C ++ в целом, для включения таких функций, как RTTI и обработка исключений. - person yan bellavance; 19.03.2010
comment
ps: собираюсь проголосовать за вас, как только закончится мой кулдаун для голосования: P - person yan bellavance; 19.03.2010

Как вы обнаружили, полностью статическое связывание с glibc невозможно, потому что, например, поддержка nss загружается динамически. Однако требуемая версия glibc в основном зависит от функций, которые вы действительно используете.

В любом случае, я думаю, вам следует вместо этого использовать Linux Standard Base, а также по причинам, указанным здесь.

person Blaisorblade    schedule 01.05.2010