Перенос программы с более новой мсвс(линукс) на более старую |
Здравствуйте, гость ( Вход | Регистрация )
Перенос программы с более новой мсвс(линукс) на более старую |
loh |
18.4.2012, 11:50
Сообщение
#1
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
Значит такое дело:
Есть программа, писал в винде на qt4, надо перенести на линукс (мсвс) где этого qt4 нет. На эту мсвс ничего устанавливать нельзя. Есть более новый мсвс (на том же ядре), с нужной версией, туда перенести удалось. Также удалось статически слинковать qt, но теперь при переносе на ранюю версию возникают ошибки по другим библиотекам динамическим — libstdc, libgcc и прочие зависимости. Вопрос: как собрать программу со статической линковкой всех библиотек, а не только qt, или есть ли вариант как в винде просто перетащить все динамические библиотеки в папку с программой и сказать что бы линковалась из папки? |
|
|
maint |
18.4.2012, 12:25
Сообщение
#2
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо
|
|
|
loh |
18.4.2012, 12:49
Сообщение
#3
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо Вот я и спрашиваю как статически слинковать другие библиотеки) какие опции там не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо ну всмысле какие флаги там в qmake прописать, или в мейке может что |
|
|
maint |
18.4.2012, 13:20
Сообщение
#4
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо Вот я и спрашиваю как статически слинковать другие библиотеки) какие опции там не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо ну всмысле какие флаги там в qmake прописать, или в мейке может что ну man gcc говорит -static на линковке должно быть (LFLAGS в Makefile). Если статические библиотеки есть, подхватятся. В qmake, кажется, -config static |
|
|
loh |
18.4.2012, 13:37
Сообщение
#5
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо Вот я и спрашиваю как статически слинковать другие библиотеки) какие опции там не знаю как в этом монстре, но в других дистрибутивах есть, скажем libstdc++-static. Если их установить и статически слинковать, то ничего тащить с собой не надо ну всмысле какие флаги там в qmake прописать, или в мейке может что ну man gcc говорит -static на линковке должно быть (LFLAGS в Makefile). Если статические библиотеки есть, подхватятся. В qmake, кажется, -config static когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет.. |
|
|
maint |
18.4.2012, 15:02
Сообщение
#6
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
Как вариант эта ось совместима с redhat 6.2 — на нём можно такую штуку проделать со статической линковкой? Вообще на каком нибудь ред хат с ядром 2.4.. И какие там qt версии стоят? :о когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет.. редхат 6.2 я уже не помню когда и ставил. И чего там, хоть умри не припомню. Искать тогда где то в инете статические библиотеки или знакомых. Другого путя не вижу. Можно с родного дистра посмотреть. Наверняка же какой то ftp у них болтается. Ошибку какую выдает ? cannon find -lQtCore или -lc ? Тогда просто не нашел статическую библиотеку. Я вообще делаю так qmake -config release. Потом в LFLAGS добавляю -static, если ваш вариант сборки. Обычно прокатывает. Но системы посвежее обычно Сообщение отредактировал maint - 18.4.2012, 15:04 |
|
|
loh |
18.4.2012, 15:37
Сообщение
#7
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
Как вариант эта ось совместима с redhat 6.2 — на нём можно такую штуку проделать со статической линковкой? Вообще на каком нибудь ред хат с ядром 2.4.. И какие там qt версии стоят? :о когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет.. редхат 6.2 я уже не помню когда и ставил. И чего там, хоть умри не припомню. Искать тогда где то в инете статические библиотеки или знакомых. Другого путя не вижу. Можно с родного дистра посмотреть. Наверняка же какой то ftp у них болтается. Ошибку какую выдает ? cannon find -lQtCore или -lc ? Тогда просто не нашел статическую библиотеку. Я вообще делаю так qmake -config release. Потом в LFLAGS добавляю -static, если ваш вариант сборки. Обычно прокатывает. Но системы посвежее обычно Не может найти -lSm Выполнение ld завершилось с кодом возврата 1 Я в параметрах qmake прописал QMAKE_LFLAGS=-static Вообще есть ещё более новая версия мсвс, на ядре 2.6, линукс способен переносить с ядра на другое ядро или лучше не пробовать?) |
|
|
maint |
18.4.2012, 16:17
Сообщение
#8
|
Участник Группа: Участник Сообщений: 235 Регистрация: 3.8.2009 Из: Иркутск Пользователь №: 982 Спасибо сказали: 28 раз(а) Репутация: 2 |
Как вариант эта ось совместима с redhat 6.2 — на нём можно такую штуку проделать со статической линковкой? Вообще на каком нибудь ред хат с ядром 2.4.. И какие там qt версии стоят? :о когда LFLAGS = -static ошибку мейк выдаёт, да и поиском каких то статических библиотек кроме qt что я сам собрал нет.. редхат 6.2 я уже не помню когда и ставил. И чего там, хоть умри не припомню. Искать тогда где то в инете статические библиотеки или знакомых. Другого путя не вижу. Можно с родного дистра посмотреть. Наверняка же какой то ftp у них болтается. Ошибку какую выдает ? cannon find -lQtCore или -lc ? Тогда просто не нашел статическую библиотеку. Я вообще делаю так qmake -config release. Потом в LFLAGS добавляю -static, если ваш вариант сборки. Обычно прокатывает. Но системы посвежее обычно Не может найти -lSm Выполнение ld завершилось с кодом возврата 1 Я в параметрах qmake прописал QMAKE_LFLAGS=-static Вообще есть ещё более новая версия мсвс, на ядре 2.6, линукс способен переносить с ядра на другое ядро или лучше не пробовать?) если в статике, пофигу вроде. Я одну софтину с 2.4 несу уже 3, пашет. Но она без гуя. -lSm X- session manager похоже. Хотя не уверен. Трудно что то сказать |
|
|
loh |
18.4.2012, 16:40
Сообщение
#9
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
А сколько в статике будет весить например просто qmainwindow пустой?
|
|
|
Iron Bug |
18.4.2012, 18:30
Сообщение
#10
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
можно же не линковать библиотеки статически, а тупо сложить их в ту же папку и указать -Wl,-rpath.. правда, их в Qt может оказаться дофига.
правда, наверное, тут и саму Qt с таким же флагом собирать придётся, иначе библиотеки друг друга могут не найти. Сообщение отредактировал Iron Bug - 18.4.2012, 18:42 |
|
|
Текстовая версия | Сейчас: 29.11.2024, 7:08 |