Перенос программы с более новой мсвс(линукс) на более старую |
Здравствуйте, гость ( Вход | Регистрация )
Перенос программы с более новой мсвс(линукс) на более старую |
loh |
18.4.2012, 11:50
Сообщение
#1
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
Значит такое дело:
Есть программа, писал в винде на qt4, надо перенести на линукс (мсвс) где этого qt4 нет. На эту мсвс ничего устанавливать нельзя. Есть более новый мсвс (на том же ядре), с нужной версией, туда перенести удалось. Также удалось статически слинковать qt, но теперь при переносе на ранюю версию возникают ошибки по другим библиотекам динамическим — libstdc, libgcc и прочие зависимости. Вопрос: как собрать программу со статической линковкой всех библиотек, а не только qt, или есть ли вариант как в винде просто перетащить все динамические библиотеки в папку с программой и сказать что бы линковалась из папки? |
|
|
Iron Bug |
1.5.2012, 22:05
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
статическая линковка glibc не всегда возможна. то есть, возможна, но если его собрать вручную, без некоторых компонентов (там сетевые какие-то вещи нельзя в статику засунуть и ещё что-то). детальнее можно почитать тут, например.
а так, если эти компоненты не используются, то флаг -static заставляет компилятор линковать всё, что можно, статически. и тогда нужно писать вручную все отдельные линуемые библиотеки. Сообщение отредактировал Iron Bug - 1.5.2012, 22:08 |
|
|
loh |
1.5.2012, 22:20
Сообщение
#3
|
Студент Группа: Участник Сообщений: 60 Регистрация: 11.5.2008 Пользователь №: 171 Спасибо сказали: 0 раз(а) Репутация: 0 |
статическая линковка glibc не всегда возможна. то есть, возможна, но если его собрать вручную, без некоторых компонентов (там сетевые какие-то вещи нельзя в статику засунуть и ещё что-то). детальнее можно почитать тут, например. а так, если эти компоненты не используются, то флаг -static заставляет компилятор линковать всё, что можно, статически. и тогда нужно писать вручную все отдельные линуемые библиотеки. ну а как нибудь как dll ку в винде просто подцепить с собой libc.so.6 можно? или она сама с кучей зависимостей будет? -Wl,rpath,. использовать чтобы эту библиотеку в папке с приложением искала прога? |
|
|
Текстовая версия | Сейчас: 25.11.2024, 17:46 |