LINUX.ORG.RU

qt 5.3 и qt 5.5

 ,


1

2

Купил книгу по программированию в qt 5.3 профессиональное программирование в с++. И там описано как создать окошко в котором пишется стандартное Привет мир. Но в версии 5.5 он не хочет компилировать.

#include <QtWidgets>
int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QLabel lbl("Hello, World !");
    lbl.show();
    return app.exec();
}

А чё говорит?

UVV ★★★★★
()

Добавь в файл проекта: greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

BRE ★★
()

В приведенном примере нет ничего такого, что могло бы не компилироваться с Qt 5.5. Поэтому проблема либо с содержимым файлов проекта (*.pro, CMakeLists.txt или Makefile), либо с инструментарием (компилятор, линкер и т.п.). Приведи сообщения об ошибке для начала.

m0rph ★★★★★
()

Не переживай, такое случается со всеми.

gavlig ★★★
()
Ответ на: комментарий от m0rph
/home/daniil/Qt/5.5/gcc_64/include/QtGui/qopenglcontext.h:54: In file included from ../../../../Qt/5.5/gcc_64/include/QtGui/qopenglcontext.h:54:0,  

/home/daniil/Qt/5.5/gcc_64/include/QtGui/QtGui:32: from ../../../../Qt/5.5/gcc_64/include/QtGui/QtGui:32,

/home/daniil/Qt/5.5/gcc_64/include/QtWidgets/QtWidgetsDepends:4: from ../../../../Qt/5.5/gcc_64/include/QtWidgets/QtWidgetsDepends:4,

/home/daniil/Qt/5.5/gcc_64/include/QtWidgets/QtWidgets:3: from ../../../../Qt/5.5/gcc_64/include/QtWidgets/QtWidgets:3,

/home/daniil/9785977533461/FTP/chapter01/Hello/hello.cpp:21: from ../Hello/hello.cpp:21:

/home/daniil/Qt/5.5/gcc_64/include/QtGui/qopengl.h:122: ошибка: GL/gl.h: No such file or directory
 #  include <GL/gl.h>
                     ^
rybis
() автор топика
Ответ на: комментарий от rybis

А нахрена ты собираешь qt из исходников? Поставь пакет средствами дистрибутива и пользуйся на здоровье.

Deleted
()
Ответ на: комментарий от rybis

GL/gl.h: No such file or directory

Ну читать же умеешь, да? opengl установи или как этот пакет у тебя в дистрибутиве называется?

UVV ★★★★★
()
Ответ на: комментарий от EXL

Ты тред принципиально не читал? Он скачал все сырцы Qt и все их пытается собрать. А qopengl, ВНЕЗАПНО, зависит от opengl! У него нет проблемы с компилированием сорца из стартового поста. У него проблема в голове.

Deleted
()
Последнее исправление: ecko (всего исправлений: 1)
Ответ на: комментарий от Deleted

Курнул что ли? Он приложение-кнопку собирает, а не Qt.

Это Qt 5 теперь даже для приложения-кнопки требует OpenGL.

EXL ★★★★★
()
Ответ на: комментарий от Deleted

Он скачал все сырцы Qt и все их пытается собрать.

Где эта фраза у ТС? Ткни носом. Я вижу только:

Я скачал из qt официального сайта там был установщик ну я и установил)

EXL ★★★★★
()
Ответ на: комментарий от EXL

Где эта фраза у ТС? Ткни носом.

Сначала хотел ответить этим

/home/daniil/Qt/5.5/gcc_64/include/QtGui/qopenglcontext.h:54: In file included from ../../../../Qt/5.5/gcc_64/include/QtGui/qopenglcontext.h:54:0

но потом понял, что и правда курнул. Ну, в таком случае, проблемы сборки. Вот чисто ради интереса могу, как буду дома, собрать этот же самый исходник и вбросить сюда ldd получившегося бинарника. Что-то мне подсказывает, что в зависимостях qopengl (как и opengl) не будет.

Deleted
()
Ответ на: комментарий от UVV

Да-да-да, я уже понял, что гоню. Меня вывод компилятора ступил.

Deleted
()
Ответ на: комментарий от fluorite

О_о Чёрт. Тогда приношу извинения товарищу EXL. И присоединяюсь к недоумениям.

Deleted
()
Ответ на: комментарий от fluorite
exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ cat qt.cpp
#include <QtWidgets>
int main(int argc, char** argv) {
    QApplication app(argc, argv);
    QLabel lbl("Hello, World !");
    lbl.show(); app.exec();
}

exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ cat test_qt.pro              
TEMPLATE = app
QT += widgets
SOURCES += qt.cpp

exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ sudo mv /usr/include/GL/gl.h /usr/include/GL/gl.h~

exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ qmake test_qt.pro
 
exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o qt.o qt.cpp
In file included from /usr/include/x86_64-linux-gnu/qt5/QtGui/qopenglcontext.h:54:0,
                 from /usr/include/x86_64-linux-gnu/qt5/QtGui/QtGui:32,
                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QtWidgetsDepends:4,
                 from /usr/include/x86_64-linux-gnu/qt5/QtWidgets/QtWidgets:3,
                 from qt.cpp:1:
/usr/include/x86_64-linux-gnu/qt5/QtGui/qopengl.h:122:21: fatal error: GL/gl.h: No such file or directory
 #  include <GL/gl.h>
                     ^
compilation terminated.
Makefile:378: recipe for target 'qt.o' failed
make: *** [qt.o] Error 1

exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ sudo mv /usr/include/GL/gl.h~ /usr/include/GL/gl.h

exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ make
g++ -c -m64 -pipe -O2 -Wall -W -D_REENTRANT -fPIE -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -o qt.o qt.cpp
g++ -m64 -Wl,-O1 -o test_qt qt.o   -L/usr/X11R6/lib64 -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread 

exl@exl-Lenovo-G560e:~/SandBox/C_C++/test_qt$ ldd test_qt | grep GL
        libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f47283a9000)
EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от fluorite

Установить mesa-devel.. в гугле забанили что-ли?

anonymous
()
Ответ на: комментарий от Deleted

Может, им багу какую зарепортить?

А какую багу, это же их предкомпилированный пакет. Внутрь QtGui с Qt 5.0.0 внесли какую-то OpenGL-мишуру. Хотя в Qt4 всё связанное с OpenGL было в отдельном модуле. Вообще, кажется, можно вырубить, если пересобирать Qt с -disable-opengl.

EXL ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.