Russian Qt Forum
Сентябрь 30, 2024, 06:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: DLL для разных Линуксов  (Прочитано 5527 раз)
radislav72
Гость
« : Июль 14, 2011, 07:49 »

Столкнулся с такой "фичей". Библиотека, скомпилированная на одном Линуксе (Федора 13) не работает (вызывает крах приложения) на другом Линуксе (Федора 12). Компиляция того же пректа "на месте" сразу решила проблему- прога работает со "своей" библиотекой без проблем. Но ето не совсем удобно, так как получается файл .so нужно иметь для разных версий линукса... Кстати, размеры обеих файлов разные, для разных версий Линукса...

Как можно решить проблему так, чтоб для всех Линуксов (по крайней мере, Федор), была одна библиотека? Можно ли так? Может, есть какие-то системные настройки, директивы компилятору/ компоновщику или еще что?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Июль 14, 2011, 07:53 »

Собирай на самой старой федоре.
Записан

Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
« Ответ #2 : Июль 14, 2011, 07:58 »

А причина? Несовместимость вверх?
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Июль 14, 2011, 08:21 »

Лучше и проще всего собирать отдельно под конкретный дистрибутив  инсталляционный пакет.
Ставишь на виртуалку и собираешь.
Записан

ArchLinux x86_64 / Win10 64 bit
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #4 : Июль 14, 2011, 10:35 »

А причина? Несовместимость вверх?
Вся причина в glibc. Каждая версия gcc по умолчанию жестко завязана на версию glibc.
Чтобы отказаться от этой завязки линковку нужно делать с флагом '-nostdlib'.
Записан

Qt 5.11/4.8.7 (X11/Win)
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #5 : Июль 14, 2011, 10:43 »

Лучше и проще всего собирать отдельно под конкретный дистрибутив  инсталляционный пакет.
Ставишь на виртуалку и собираешь.
Очень геморное решение, требующее очень много времени для сборки и поддержки.
Намного проще иметь один пакет на все дистрибутивы собранный makeself.
Именно так и делают практически для всех коммерческих пакетов.
Записан

Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
« Ответ #6 : Июль 14, 2011, 12:52 »

Чтобы отказаться от этой завязки линковку нужно делать с флагом '-nostdlib'.
А где этот флаг надо прописать?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #7 : Июль 14, 2011, 14:19 »

Чтобы отказаться от этой завязки линковку нужно делать с флагом '-nostdlib'.
А где этот флаг надо прописать?
В опциях линковки. Всё зависит от того чем и как собирается проект.
Записан

Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
« Ответ #8 : Июль 14, 2011, 14:28 »

Я скачал с оф. сайта Qt для Windows и установил его "по стандарту". Я так понимаю, qmake используется для сборки?

Qt 4.7.0, Qt Creator 2.0.1
« Последнее редактирование: Июль 14, 2011, 14:31 от radislav72 » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #9 : Июль 14, 2011, 14:47 »

Я скачал с оф. сайта Qt для Windows и установил его "по стандарту". Я так понимаю, qmake используется для сборки?
А причём здесь Федора и линукс  Непонимающий
Записан

Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
« Ответ #10 : Июль 14, 2011, 15:08 »

Да, извиняюсь!
После создания (в среде Виндовс) проект просто портирован на Федору, на которой так же стандартно устаногвлен тот же Qt (чуть новее- 4.7.2). там и компилировался с помощью Qt Creator-а.
« Последнее редактирование: Июль 14, 2011, 15:10 от radislav72 » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #11 : Июль 14, 2011, 15:12 »

Да, извиняюсь!
После создания (в среде Виндовс) проект просто портирован на Федору, на которой так же стандартно устаногвлен тот же Qt (чуть новее- 4.7.2). там и компилировался с помощью Qt Creator-а.
Добавь в .pro файл:
Цитировать
QMAKE_LFLAGS += -nostdlib
Записан

Qt 5.11/4.8.7 (X11/Win)
radislav72
Гость
« Ответ #12 : Июль 14, 2011, 16:23 »

Так не компилируется вообще

undefined reference to operator...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.054 секунд. Запросов: 20.