Russian Qt Forum
Ноябрь 24, 2024, 09:50
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Установка, сборка, отладка, тестирование
>
DLL для разных Линуксов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: DLL для разных Линуксов (Прочитано 5583 раз)
radislav72
Гость
DLL для разных Линуксов
«
:
Июль 14, 2011, 07:49 »
Столкнулся с такой "фичей". Библиотека, скомпилированная на одном Линуксе (Федора 13) не работает (вызывает крах приложения) на другом Линуксе (Федора 12). Компиляция того же пректа "на месте" сразу решила проблему- прога работает со "своей" библиотекой без проблем. Но ето не совсем удобно, так как получается файл .so нужно иметь для разных версий линукса... Кстати, размеры обеих файлов разные, для разных версий Линукса...
Как можно решить проблему так, чтоб для всех Линуксов (по крайней мере, Федор), была одна библиотека? Можно ли так? Может, есть какие-то системные настройки, директивы компилятору/ компоновщику или еще что?
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: DLL для разных Линуксов
«
Ответ #1 :
Июль 14, 2011, 07:53 »
Собирай на самой старой федоре.
Записан
Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
Re: DLL для разных Линуксов
«
Ответ #2 :
Июль 14, 2011, 07:58 »
А причина? Несовместимость вверх?
Записан
kuzulis
Джедай : наставник для всех
Offline
Сообщений: 2812
Re: DLL для разных Линуксов
«
Ответ #3 :
Июль 14, 2011, 08:21 »
Лучше и проще всего собирать отдельно под конкретный дистрибутив
инсталляционный пакет
.
Ставишь на виртуалку и собираешь.
Записан
ArchLinux x86_64 / Win10 64 bit
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: DLL для разных Линуксов
«
Ответ #4 :
Июль 14, 2011, 10:35 »
Цитата: radislav72 от Июль 14, 2011, 07:58
А причина? Несовместимость вверх?
Вся причина в glibc. Каждая версия gcc по умолчанию жестко завязана на версию glibc.
Чтобы отказаться от этой завязки линковку нужно делать с флагом '-nostdlib'.
Записан
Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: DLL для разных Линуксов
«
Ответ #5 :
Июль 14, 2011, 10:43 »
Цитата: kuzulis от Июль 14, 2011, 08:21
Лучше и проще всего собирать отдельно под конкретный дистрибутив
инсталляционный пакет
.
Ставишь на виртуалку и собираешь.
Очень геморное решение, требующее очень много времени для сборки и поддержки.
Намного проще иметь один пакет на все дистрибутивы собранный
makeself
.
Именно так и делают практически для всех коммерческих пакетов.
Записан
Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
Re: DLL для разных Линуксов
«
Ответ #6 :
Июль 14, 2011, 12:52 »
Цитата: GreatSnake от Июль 14, 2011, 10:35
Чтобы отказаться от этой завязки линковку нужно делать с флагом '-nostdlib'.
А где этот флаг надо прописать?
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: DLL для разных Линуксов
«
Ответ #7 :
Июль 14, 2011, 14:19 »
Цитата: radislav72 от Июль 14, 2011, 12:52
Цитата: GreatSnake от Июль 14, 2011, 10:35
Чтобы отказаться от этой завязки линковку нужно делать с флагом '-nostdlib'.
А где этот флаг надо прописать?
В опциях линковки. Всё зависит от того чем и как собирается проект.
Записан
Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
Re: DLL для разных Линуксов
«
Ответ #8 :
Июль 14, 2011, 14:28 »
Я скачал с оф. сайта Qt для Windows и установил его "по стандарту". Я так понимаю, qmake используется для сборки?
Qt 4.7.0, Qt Creator 2.0.1
«
Последнее редактирование: Июль 14, 2011, 14:31 от radislav72
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: DLL для разных Линуксов
«
Ответ #9 :
Июль 14, 2011, 14:47 »
Цитата: radislav72 от Июль 14, 2011, 14:28
Я скачал с оф. сайта Qt для
Windows
и установил его "по стандарту". Я так понимаю, qmake используется для сборки?
А причём здесь Федора и линукс
Записан
Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
Re: DLL для разных Линуксов
«
Ответ #10 :
Июль 14, 2011, 15:08 »
Да, извиняюсь!
После создания (в среде Виндовс) проект просто портирован на Федору, на которой так же стандартно устаногвлен тот же Qt (чуть новее- 4.7.2). там и компилировался с помощью Qt Creator-а.
«
Последнее редактирование: Июль 14, 2011, 15:10 от radislav72
»
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: DLL для разных Линуксов
«
Ответ #11 :
Июль 14, 2011, 15:12 »
Цитата: radislav72 от Июль 14, 2011, 15:08
Да, извиняюсь!
После создания (в среде Виндовс) проект просто портирован на Федору, на которой так же стандартно устаногвлен тот же Qt (чуть новее- 4.7.2). там и компилировался с помощью Qt Creator-а.
Добавь в .pro файл:
Цитировать
QMAKE_LFLAGS += -nostdlib
Записан
Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
Re: DLL для разных Линуксов
«
Ответ #12 :
Июль 14, 2011, 16:23 »
Так не компилируется вообще
undefined reference to operator...
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...