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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: symbol lookup error  (Прочитано 9552 раз)
chu
Гость
« : Август 16, 2012, 16:59 »

На рабочем компьютере с Ubuntu 10.04 и Qt 4.8.1 скомпилировал программу.
Перенес её на другой компьютер c точно такой же Ubuntu, но без Qt. Комп не имеет доступа к интернету, поэтому скачал с сайта http://packages.ubuntu.com необходимые .deb пакеты (qt библиотеки) и установил их на него.
Запускаю программу, выдаёт ошибку:
Код:
/path/to/bin: undefined symbol: _ZN6QImage4fillEN2Qt11GlobalColorE
Погуглил, оказалось что ошибка возникает из-за несоответствия библиотек (в репозитории ubuntu их версия 4.6).
Готовых .deb пакетов библиотек qt4.8.1 я не нашел, предполагаю их и нет, зато на сайте http://qt.nokia.com/downloads/ есть исходники (qt-everywhere-opensource-src_4.8.2).
Нашел утилиту checkinstall, которая может из исходников создавать .deb пакеты:
Код:
cd /path/to/extracted/package
./configure
sudo make
sudo checkinstall
Получился файл qt-everywhere-opensource-src_4.8.2-1_i386.deb. Установил его, в синаптике вместо ожидаемого списка qt библиотек появилась 1 запись: qt-everywhere-opensource-src (абсолютно бесполезная).
Вопрос: где взять, как создать эти самые .deb пакеты с библиотеками qt4.8?

Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Август 16, 2012, 18:48 »

а со своей машины разве нельзя взять готовые библиотеки?
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Август 17, 2012, 00:42 »

synaptic показывает список установленных пакетов, а не библиотек. Понятно, что после установки qt-everywhere-opensource-src_4.8.2-1_i386.deb в synaptic будет отображаться именно он.

Но ближе к теме. Сама программа тоже оформлена в виде deb пакета? Если да, то самое быстрое и несколько кривое - прописать пакет qt-everywhere-opensource-src >= 4.8.1 в качестве альтернативы в control файл. Если не в виде deb пакета, то всё должно работать и так.
Записан
chu
Гость
« Ответ #3 : Август 17, 2012, 01:19 »

Программа оформлена в виде исполняемого файла + конфиги, ресурсы и т.д.
Установил на оффлайн комп QtSDK (подумал вместе с ним в системе пропишутся необходимые либы, но нет).
Зато теперь если в консоли прописать export LD_LIBRARY_PATH=/path/to/qtsdk/lib, из неё можно запускать моё приложение.
Но хочется запускать его из файлового проводника (nautilus).
Опять же гуглил, нашел кучу разных способов прописать путь к каталогу с либами (в /etc/envarinment /etc/profile и еще разные другие)
, но, что удивительно, не один не сработал (видимо мне очень везет сегодня).
Так что вопрос остается открытым.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Август 21, 2012, 12:15 »

Установи Qt библиотеки из любого пакета - хоть из стандартных libqt4-*, или твоего qt-everywhere-opensource-*, главное чтобы Qt либы в твоём пакете ложились в /usr/lib или /usr/local/lib, чтобы их нашла программа при запуске.
Записан
chu
Гость
« Ответ #5 : Август 21, 2012, 18:25 »

Установи Qt библиотеки из любого пакета - хоть из стандартных libqt4-*, или твоего qt-everywhere-opensource-*, главное чтобы Qt либы в твоём пакете ложились в /usr/lib или /usr/local/lib, чтобы их нашла программа при запуске.
После установки стандартных(скачанных с  http://packages.ubuntu.com ) программа выдает ту самую ошибку.
Пакет  qt-everywhere-opensource-* содержит исходники, которые нужно собирать, в нем смысла, как я сейчас понял, нет так как он выдаст уже имеющиеся у меня на рабочем компе библиотеки.
Можно под рутом скопировать эти самые библиотеки с рабочего компа в /usr/lib и программа будет работать, но мне кажется это решение не честным, так как плохо что-то устанавливать в обход менеджера пакетов.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #6 : Август 21, 2012, 20:53 »

библиотеки должны быть такой же версии или выше той версии Qt, с которой вы компилировали на своём компе. Если вы компилировали с 4.8 а на второй комп поставили 4.6, то скорее всего всё будет вылетать.

Или компилируйте на своём с 4.6, или на первом компе скомпилируйте пакет qt-everywhere-opensource-4.8.1 (это нужно не для рабочего компа!) и поставьте на второй комп.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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