Qt в ASTRA LINUX 1.5

Eld

New member
Сообщения
14
#1
Всем здравствуйте. В общем начал изучать QT и при попытке компановки первой оконной программы выдаёт распространённую ошибку: cannot find lGL. Перепробовал все что советует гугл: ставил libgl1-mesa-dev, в проекте прописывал библиотеки (по всякому, кто как советовал), а ошибка все не пропадает. Кстати консольное приложение компилируется нормально и работает. Посоветуйте что делать? Неделю бьюсь уже.
 

drug

New member
Сообщения
12
#2
Так как у вас в консоли все линкуется, значит вы необходимую библиотеку поставили. Проблема в том, что в IDE, (я так понимаю QtCreator) у вас не прописаны пути к этой библиотеке. Вам нужно найти где стоит эта либа и указать к ней путь. Я QtCreator не пользуюсь, поэтому не подскажу конкретно.
В принципе, если у вас libGL линкуется динамически, то путь к ней можно посмотреть с помощью `ldd` - возьмите бинарник, который у вас собрался в консоли и в каталоге где он лежит выполните команду:
```
ldd <имя вашего файла>
```
У вас будет вывод где будет написано, от каких динамических библиотек зависит бинарник и пути к этим библиотекам. Найдите там `libGL` и путь к ней нужно прописать в вашей IDE. Но вообще странно, эта библиотека должна быть доступна без лишних движений.

Ну а вообще логи были бы полезны. А так просто гадание по экрану монитора получается.
 

Eld

New member
Сообщения
14
#3
Так как у вас в консоли все линкуется, значит вы необходимую библиотеку поставили. Проблема в том, что в IDE, (я так понимаю QtCreator) у вас не прописаны пути к этой библиотеке. Вам нужно найти где стоит эта либа и указать к ней путь. Я QtCreator не пользуюсь, поэтому не подскажу конкретно.
В принципе, если у вас libGL линкуется динамически, то путь к ней можно посмотреть с помощью `ldd` - возьмите бинарник, который у вас собрался в консоли и в каталоге где он лежит выполните команду:
```
ldd <имя вашего файла>
```
У вас будет вывод где будет написано, от каких динамических библиотек зависит бинарник и пути к этим библиотекам. Найдите там `libGL` и путь к ней нужно прописать в вашей IDE. Но вообще странно, эта библиотека должна быть доступна без лишних движений.

Ну а вообще логи были бы полезны. А так просто гадание по экрану монитора получается.
Спасибо за отклик.
Вообще заметил следующее в консоли сборки:
-L/usr/x11r6/lib64
где это прописываетстя в автомате?
 

Eld

New member
Сообщения
14
#4
Спасибо за отклик.
Вообще заметил следующее в консоли сборки:
-L/usr/x11r6/lib64
где это прописываетстя в автомате?
Видимо проблема в этом. То есть ссылается на место которого нет и в котором нет библиотеки. Хотя в проекте прописывал вручную. И ещё вопрос, бинарник это makefile видимо?
 

drug

New member
Сообщения
12
#6
Бинарник это файл с машинным кодом, который вам собрал компилятор по вашей программе. В этом файле данные в бинарном (двоичном) виде, поэтому называют сокращенно бинарник. Он обычно имеет имя совпадающее с именем вашего проекта, лежит в корне проекта и имеет права на выполнение (т.е. его можно запустить), в винде такие файлы имеют расширение `exe`.
А вы как собираете проект? С помощью чего?
 

Eld

New member
Сообщения
14
#9
А такого файла нет, в корне. А собираю с помощью qt 5.5.1
 

drug

New member
Сообщения
12
#12
Понимаете, по умолчанию стоит много чего. qt 5.5.1 это фреймворк. Вы можете собирать приложения с его использованием как из командной строки, так из IDE. Вы можете собирать на голом Makefile, так и с помощью CMake. А можно и qmake использовать из командной строки. Вариантов масса даже по умолчанию. Чем подробнее вы предоставите информацию, тем проще будет вам помочь. По ответам предполагаю что все-таки qtcreator у вас используется, но я не хочу гадать.
 

Eld

New member
Сообщения
14
#13
Ок спасибо за помощь, буду дальше рыть. Как логи показать бы вам.
 

Eld

New member
Сообщения
14
#14
И ещё по поводу make, в разделе слева "проекты" есть настройка этапы сборки. Там по умолчанию стоит первым qmake, пока с непонятными для меня параметрами, далее просто make без параметров
 

Eld

New member
Сообщения
14
#15
Получается сначала собирает qmake, а потом make?
При отключении второго этапа (make) ошибка одна- нет исполняемого файла.
 

drug

New member
Сообщения
12
#16
Если вы работаете в qtcreator то да, в начале утилита qmake запускается, которая генерирует Makefile, который уже собирается утилитой make.

У вас там внизу должна быть кнопка "Консоль сборки", там должен быть лог сборки
 

Eld

New member
Сообщения
14
#17
Здравствуйте снова.
Поставил астру и qt на другой машине с выходом в инет, и вот лог сборки:


12:32:33: Выполняются этапы для проекта wd1...

12:32:33: Настройки не изменились, этап qmake пропускается.

12:32:33: Запускается: «/usr/bin/make» -r -w

make: Entering directory `/home/eld/Desktops/Desktop1/qt/build-wd1-Desktop_Qt_5_2_0_GCC_64bit-Отладка'

g++ -Wl,-rpath,/opt/Qt5.2.0/5.2.0/gcc_64 -Wl,-rpath,/opt/Qt5.2.0/5.2.0/gcc_64/lib -o wd1 main.o wdmain.o moc_wdmain.o -L/opt/Qt5.2.0/5.2.0/gcc_64/lib -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread

/usr/bin/ld: cannot find -lGL

make: Leaving directory `/home/eld/Desktops/Desktop1/qt/build-wd1-Desktop_Qt_5_2_0_GCC_64bit-Отладка'

collect2: error: ld returned 1 exit status

make: *** [wd1] Error 1

12:32:33: Процесс «/usr/bin/make» завершился с кодом 2.

Ошибка при сборке/установке проекта wd1 (комплект: Desktop Qt 5.2.0 GCC 64bit)

Во время выполнения этапа «Сборка»

12:32:33: Прошло времени: 00:00.
 

drug

New member
Сообщения
12
#18
Уже намного лучше. Еще нужен лог со сборкой из консоли, чтобы сравнить. Но судя по всему путь по умолчанию в аргументах отсутствует и это приводит к ошибке линковки.
Вот эта команда что выводит:
```
ld -lGL
```
 

Eld

New member
Сообщения
14
#19
Все спасибо, проблема решена полной переустановкой!