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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Linux, Ubuntu 14.01 LTS, Qt5.3, не могу собрать пример и найти библиотеки(реш.)  (Прочитано 9899 раз)
Eten
Гость
« : Октябрь 19, 2014, 09:43 »

Всем привет и доброго утра.

У меня тут проблема возникла, над которой работаю с самого раннего утра. Я недавно начал осваивать Linux через Ubuntu 14.01 LTS (несколько раз уже работал, так что более или менее мне понятно, что библиотеки лежат в /usr/lib, однако опыта маловато еще). Решил перенести работу с Qt5.3 на Линукс, поэтому скачал "qt-opensource-linux-x86-5.3.1.run" с офф.сайта и поставил. Прошло без проблем.

Однако, когда я попытался запустить пример 2dpainting (чтобы для себя на будущее c OpenGL проверить запуск и работу), повалили ошибки. Оказались проблемы с тем, что не доустановлен gcc в полном комплекте. Я это исправил тем, что нашел как поставить и что, а потом это сделал. Однако проблемы не закончились, что в принципе нормально. Обнаружилось, что не хватает для OpenGL поставить недостающее, поэтому еще поискал и опять начал ставить недостающее. И т.д. в том же дуже, нету, ищу и ставлю. (Ссылки внизу поста, это те страницы по которым я находил недостающую инфу для решения проблемы)

Только решение сей беды зашло в тупик на том, что я не могу найти библиотеки Qt5.3, т.е. сами so. Т.к. QtCreator не может собрать и запустить прогу вывалив ниже следующие:
Код:
08:56:36: Выполняются этапы для проекта 2dpainting...
08:56:36: Настройки не изменились, этап qmake пропускается.
08:56:36: Запускается: «/usr/bin/make»
g++ -m64 -Wl,-rpath,/home/andryuhan/Qt/5.3/gcc -Wl,-rpath,/home/andryuhan/Qt/5.3/gcc/lib -o 2dpainting glwidget.o helper.o main.o widget.o window.o moc_glwidget.o moc_widget.o moc_window.o   -L/usr/X11R6/lib64 -L/home/andryuhan/Qt/5.3/gcc/lib -lQt5OpenGL -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
/usr/bin/ld: skipping incompatible /home/andryuhan/Qt/5.3/gcc/lib/libQt5OpenGL.so when searching for -lQt5OpenGL
/usr/bin/ld: cannot find -lQt5OpenGL
/usr/bin/ld: skipping incompatible /home/andryuhan/Qt/5.3/gcc/lib/libQt5Widgets.so when searching for -lQt5Widgets
/usr/bin/ld: cannot find -lQt5Widgets
/usr/bin/ld: skipping incompatible /home/andryuhan/Qt/5.3/gcc/lib/libQt5Gui.so when searching for -lQt5Gui
/usr/bin/ld: cannot find -lQt5Gui
/usr/bin/ld: skipping incompatible /home/andryuhan/Qt/5.3/gcc/lib/libQt5Core.so when searching for -lQt5Core
/usr/bin/ld: cannot find -lQt5Core
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
make: *** [2dpainting] Error 1
08:56:36: Процесс «/usr/bin/make» завершился с кодом 2.
Ошибка при сборке/установке проекта 2dpainting (комплект: Desktop Qt 5.3 GCC 32bit)
Во время выполнения этапа «Сборка»
08:56:36: Прошло времени: 00:00.

Исходя из указанного, как я понял. Не находится libQt5OpenGL.so, libQt5Widgets.so, libQt5Gui.so, libQt5Core.so. В общем начал искать эти библиотеки сам, полагая, что они должны стоять в системе Linux.

Код:
apt-file search libQt5OpenGL.so >>  ~/logs/searchlib.log
libqt5opengl5: /usr/lib/i386-linux-gnu/libQt5OpenGL.so.5
libqt5opengl5: /usr/lib/i386-linux-gnu/libQt5OpenGL.so.5.2
libqt5opengl5: /usr/lib/i386-linux-gnu/libQt5OpenGL.so.5.2.1
libqt5opengl5-dev: /usr/lib/i386-linux-gnu/libQt5OpenGL.so

apt-file search libQt5Widgets.so >>  ~/logs/searchlib.log
libqt5widgets5: /usr/lib/i386-linux-gnu/libQt5Widgets.so.5
libqt5widgets5: /usr/lib/i386-linux-gnu/libQt5Widgets.so.5.2
libqt5widgets5: /usr/lib/i386-linux-gnu/libQt5Widgets.so.5.2.1
qtbase5-dev: /usr/lib/i386-linux-gnu/libQt5Widgets.so

apt-file search libQt5Gui.so >>  ~/logs/searchlib.log
libqt5gui5: /usr/lib/i386-linux-gnu/libQt5Gui.so.5
libqt5gui5: /usr/lib/i386-linux-gnu/libQt5Gui.so.5.2
libqt5gui5: /usr/lib/i386-linux-gnu/libQt5Gui.so.5.2.1

qtbase5-dev: /usr/lib/i386-linux-gnu/libQt5Gui.so
apt-file search libQt5Core.so >>  ~/logs/searchlib.log
libqt5core5a: /usr/lib/i386-linux-gnu/libQt5Core.so.5
libqt5core5a: /usr/lib/i386-linux-gnu/libQt5Core.so.5.2
libqt5core5a: /usr/lib/i386-linux-gnu/libQt5Core.so.5.2.1
qtbase5-dev: /usr/lib/i386-linux-gnu/libQt5Core.so

Зашел в тупик, т.к. по всем этим адресам выше, попадаются жесткие ссылки, кроме файла, как например этот libQt5Core.so.5.2.1. Заглядываю в ту папку куда ставил сам Qt5.3 (путь ~/Qt/5.3/gcc/lib), там тоже  ссылки на разделяемые библиотеки (application/x-sharedlib). В общем, в конечно итоге я пришел к неутешительному выводу, что у меня нету самих библиотек в системе, даже несмотря на то, что устанавливал через "qt-opensource-linux-x86-5.3.1.run".

Все ли я правильно сделал или чего-то упустил? Может перепутал? Народ, нужна ваша помощь. Подмигивающий

З.Ы.
Чтобы компилилось, разумеется в настройках по компилятору GCC прописал /usr/bin/gcc-4.8.

-----------------------
Список страниц, по которым я шел при решении своих затруднений:

http://unix.stackexchange.com/questions/140350/linux-g-command-not-found
http://ubuntuforums.org/showthread.php?t=1464768
http://stackoverflow.com/questions/4643197/missing-include-bits-cconfig-h-when-cross-compiling-64-bit-program-on-32-bit
http://askubuntu.com/questions/368404/make-command-compiling-errors
http://www.prinmath.com/csci5229/misc/install.html
http://forums.debian.net/viewtopic.php?f=8&t=114419
http://askubuntu.com/questions/432732/fatal-error-gl-glut-h-no-such-file-or-directory
http://qt-project.org/forums/viewthread/17535
http://forum.ubuntu.ru/topic_217754_0.html
http://gcup.ru/forum/62-23408-1
http://hashcode.ru/questions/238677/c-%D0%BA%D0%B0%D0%BA-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C-opengl-%D0%BD%D0%B0-ubuntu
https://software.intel.com/en-us/articles/error-ld-cannot-find-lm
http://www.lpcware.com/content/faq/lpcxpresso/linker-cannot-find-library
http://stackoverflow.com/questions/335928/ld-cannot-find-an-existing-library
http://qt-project.org/forums/viewthread/22848
http://www.linux.org.ru/forum/development/9970633
http://www.forum.crossplatform.ru/index.php?showtopic=6923
http://qt-project.org/forums/viewthread/13617


--------------------------------------------------------------------------------
Проблема была решена. Оказалось, я просто не заметил, как поставил два пакета: qt-opensource-linux-x86-1.6.0-5-online.run и qt-opensource-linux-x86-5.3.1.run. Полагал, что нужно их было оба, а оказалось достаточно первого файла. Так удалил установленную папку Qt  и поставил заново первый из приведенных выше файлов. Пример, заработал.

З.Ы.
Спасибо, что ответили в моей теме. Т.к. ответ про разрядность ОС меня и натолкнул на мою ошибку
« Последнее редактирование: Ноябрь 08, 2014, 16:09 от Eten » Записан
Eten
Гость
« Ответ #1 : Октябрь 28, 2014, 19:36 »

Народ, а почему никто не отвечает?! Не уж то я слишком мудренно написал пост? Или тут нет тех, кто занимается разработкой ПО на Qt в Линуксе?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #2 : Октябрь 28, 2014, 20:28 »

Цитировать
g++ -m64

система 64-bit? Ты скачал 32-битный тулкит на 64-битную систему. Линковаться всё это хозяйство сможет только в 32-битном режиме, но это тебе не нужно. Поставь 64-битный дистрибутив Qt через .run файл с сайта qt-project, или вообще из репозиториев Ubuntu (sudo apt-get install qtbase5-dev qttools5-dev)
Записан
Eten
Гость
« Ответ #3 : Октябрь 29, 2014, 19:27 »

Цитировать
g++ -m64

система 64-bit? Ты скачал 32-битный тулкит на 64-битную систему. Линковаться всё это хозяйство сможет только в 32-битном режиме, но это тебе не нужно. Поставь 64-битный дистрибутив Qt через .run файл с сайта qt-project, или вообще из репозиториев Ubuntu (sudo apt-get install qtbase5-dev qttools5-dev)
Вообще-то у меня 32 битная ОС, а не 64. И да, что-то я не обратил на это внимания. Однако, наверняка, это не дает ответа на то, где искать библиотеки (с расширением "so").

З.Ы.
Но, за ответ все равно спасибо. Как-то не обратил внимание на "64".  Шокированный
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #4 : Октябрь 29, 2014, 20:04 »

Вообще-то у меня 32 битная ОС, а не 64. И да, что-то я не обратил на это внимания. Однако, наверняка, это не дает ответа на то, где искать библиотеки (с расширением "so").

Библиотеки поставляются в официальном установщике, и ты их уже находил. ld не мог их использовать из-за того, что твоя программа компилировалась в 64-битном режиме, а библиотеки - 32-битные, об этом и было сообщение от него (skipping incompatible...). У тебя что-то с опциями компиляции проекта, там откуда-то появилась опция -m64. Убери её и всё будет работать.

Также я дал команду чтобы установить Qt5 из репозиториев без использования инсталлятора от Digia, в 14.04 на данный момент версия Qt - 5.2.1. Это просто на заметку.
« Последнее редактирование: Октябрь 29, 2014, 20:06 от Alex Custov » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Октябрь 30, 2014, 07:59 »

1) Снесите все связанное с Qt.
2) Выполните установку через онлайн инсталлятор
Записан
neochapay
Гость
« Ответ #6 : Ноябрь 01, 2014, 16:24 »

sudo ls /etc/ld.so.conf.d/ сделайте плиз
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #7 : Ноябрь 04, 2014, 10:50 »

что бы виделись либы Qt, нужно прописать в /etc/ld.so.conf.d текстовый файл (назовем его например qt.conf) такого содержания

Код:
/opt/Qt/5.3/gcc_64/lib

Путь к Qt пропишите тот, куда вы ставили Qt при условии что качали из сайта qt-project.org инсталлятор. Если ставили через apt-get то этот этап можно пропустить.

а потом выполнить
Код:
sudo ldconfig

Еще при линковке будет ругаться на -lGL. Это нормально, просто сделайте символическую ссылку на файл либы.
Вот например как сделано у меня (стоит mesa-gl, для nvidia/ati нужно указать соответствующий путь)

/usr/lib/x86_64-linux-gnu/mesa/libGL.so -> /usr/lib

или же прописать в /etc/ld.so.conf.d файл gl.conf такого содержания
Код:
/usr/lib/x86_64-linux-gnu/mesa

и sudo ldconfig.
Должно помочь.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Ноябрь 04, 2014, 11:58 »

что бы виделись либы Qt, нужно прописать в /etc/ld.so.conf.d текстовый файл (назовем его например qt.conf) такого содержания

Код:
/opt/Qt/5.3/gcc_64/lib

Путь к Qt пропишите тот, куда вы ставили Qt при условии что качали из сайта qt-project.org инсталлятор.

Официальный инсталлятор использует rpath, и не требует модификации ld.so.conf.
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #9 : Ноябрь 05, 2014, 11:27 »

не знаю не знаю, я когда пытался запустить с консоли свое приложение, ругалось что не находит либы кутешные. когда сделал операцию с ldconfig - заработало...
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Ноябрь 05, 2014, 13:43 »

не знаю не знаю, я когда пытался запустить с консоли свое приложение, ругалось что не находит либы кутешные. когда сделал операцию с ldconfig - заработало...

А какое именно сообщение? Просто интересно. И покажи вывод ldd
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #11 : Ноябрь 06, 2014, 12:27 »

да какое, libQtCore5 not found и т.д.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #12 : Ноябрь 06, 2014, 16:43 »

да какое, libQtCore5 not found и т.д.

Думаю что это специфичные настройки системы сборки, запретившей использование rpath. Это Gentoo/Arch?
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #13 : Ноябрь 07, 2014, 11:46 »

нет, банальная убунта  Смеющийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #14 : Ноябрь 07, 2014, 13:29 »

нет, банальная убунта  Смеющийся

В Убунте точно rpath, я сам в Убунте собираю. Без деталей проекта и как что куда установлено больше сказать сложно.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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