![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
loh |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Значит такое дело:
Есть программа, писал в винде на qt4, надо перенести на линукс (мсвс) где этого qt4 нет. На эту мсвс ничего устанавливать нельзя. Есть более новый мсвс (на том же ядре), с нужной версией, туда перенести удалось. Также удалось статически слинковать qt, но теперь при переносе на ранюю версию возникают ошибки по другим библиотекам динамическим — libstdc, libgcc и прочие зависимости. Вопрос: как собрать программу со статической линковкой всех библиотек, а не только qt, или есть ли вариант как в винде просто перетащить все динамические библиотеки в папку с программой и сказать что бы линковалась из папки? |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
как примерно мейкфайл должен выглядеть чтобы она собирал программу так, что она переносилась на любу систему это какой-то сильно сложный автоконфиг надо городить. если хочешь в этом разбираться, копай в сторону GNU autotools. там стопицот тонн документации на эту тему. насчёт параметров GCC - читать доки на сайте GCC. правда, я не помню, с какой версии компилятора стало можно линковать статически. к тому же, сам компилятор должен быть собран с возможностью статической линковки libgcc (это к тому, если ты сам его собирать будешь), стандартный собран со статикой, как правило. кроме того, есть ещё одно ограничение на статику: если ты будешь линковать libgcc статически, то у тебя не будут работать эксепшны между динамическими библиотеками и твоей софтиной. это специфика обработки исключений. так что при статически прилинкованной libgcc если внешний модуль Qt вдруг кинет исключение, то ты его просто не увидишь. вполне вероятно, что в таких условиях Qt не будет работать нормально. |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 11.5.2025, 20:57 |