Qt: không tìm thấy lỗi -lGL


109

Tôi vừa cài đặt lại QtCreator, tạo dự án mới ( Ứng dụng Qt ) và nhận được điều này sau khi biên dịch:

/usr/bin/ld: **cannot find -lGL**
collect2: error: ld returned 1 exit status
make: *** [untitled1] Error 1
18:07:41: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project untitled1 (kit: Desktop Qt 5.1.0 GCC 32bit)
When executing step 'Make'

( Dự án trống, tôi đã không cam kết bất kỳ thay đổi nào )

Qt Creator 2.7.2
Dựa trên Qt 5.1.0 (32 bit)
Ubuntu 13.04

Làm thế nào để giải quyết vấn đề này?


bạn đã cài đặt opengl chưa?
lpapp


Câu trả lời:


157

Bạn nên cài đặt gói "libgl1-mesa-dev":

sudo apt install libgl1-mesa-dev

6
Làm thế nào đây là câu trả lời chính xác? Tại sao bạn nên liên kết với một thư viện không được sử dụng? Các cờ liên kết không nên đơn giản là không bao gồm -lGL?
Cuadue

6
@Cuadue: GL trong lỗi và trong libgl1 -... dành cho OpenGL, một phụ thuộc cơ bản của Qt 5.x. Đây là một lỗi phổ biến đối với các nhà phát triển khi thiết lập phát triển Qt - nhưng một khi họ cài đặt lib phát triển OpenGL, họ sẽ không bao giờ gặp lại lỗi đó.
pixelgrease

Ubuntu 20.04 đi kèm với các thư viện OpenGL bắt buộc, không cần cài đặt bất kỳ gói nào, bạn chỉ cần dùng lnđể tạo liên kết trong / usr / lib, xem câu trả lời của destan , gói 20.04 dường như không có gì hữu ích trong đó.
jrh

74

bạn không cần cài đặt bất cứ thứ gì. libGLđã được cài đặt với Ubuntu, bạn chỉ cần liên kết mềm nó. (đã thử nghiệm cho ubuntu 14.x và 15.x, có thể hoạt động cho các phiên bản sau)

  1. Đầu tiên định vị thư viện GL
  2. Sau đó liên kết nó theo / usr / lib
  3. Nếu thư viện bị thiếu, nó có thể được cài đặt thông qua gói libgl1-mesa-dev

Đây là cách bạn có thể làm điều này:

$ locate libGL
/usr/lib/i386-linux-gnu/mesa/libGL.so.1
/usr/lib/i386-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEW.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10
/usr/lib/x86_64-linux-gnu/libGLEWmx.so.1.10.0
/usr/lib/x86_64-linux-gnu/libGLU.so.1
/usr/lib/x86_64-linux-gnu/libGLU.so.1.3.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1
/usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2
/usr/lib/x86_64-linux-gnu/mesa-egl/libGLESv2.so.2.0.0
$ sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 /usr/lib/libGL.so

1
Đúng, nó hoạt động. Thông thường, bạn nên chạy ldconfigsau khi xử lý các thư viện được chia sẻ như trong trường hợp này.
José Tomás Tocino

Cảm ơn câu trả lời! Trên hệ thống của tôi, tôi có nhiều libGL vì sdk Android, steam và các ứng dụng khác. Thư mục mesa ban đầu cũng có trong i386-linux-gnuthư mục. Đối với bất kỳ ai đọc câu trả lời này, bạn có thể dễ dàng định vị thư viện được cài đặt mặc định trong Ubuntu bằng cách chạy locate libGL | grep mesavà sau đó thay đổi sudo lnlệnh cuối cùng được đề cập trong câu trả lời này với đúng vị trí.
Akash Agarwal

1
Điều này đã làm việc cho tôi trên Ubuntu 16.10, nhưng tôi bối rối không biết bây giờ nó đang sử dụng GPU NVidia để kết xuất OpenGL hay trình kết xuất dưới dạng / w?
DavidJ

Câu trả lời này dường như không giải quyết được câu hỏi pkg-config phải không? IE: nếu bạn đã thiết lập dòng xây dựng qt để sử dụng pkg-config --libs, giải pháp này vẫn không trả về bất cứ thứ gì cho GL? Để an toàn, tôi chỉ cần cài đặt mesa-dev.
Alex Summers

3
Bạn Sir, xứng đáng cookie không phải là con-người đàn ông là người đánh dấu lớn
djangodude

3

Mô-đun gui Qt được bao gồm theo mặc định . Nếu bạn không muốn sử dụng nó trong một dự án (ví dụ: nó là một thư viện hoặc chỉ sử dụng stdio), bạn cần chỉ định nó trong tệp .pro.

QT -= gui

Và trình liên kết sẽ không cố gắng tìm lGL bất kể nó đã được cài đặt hay chưa.

Trường hợp của tôi phải thừa nhận là hơi kỳ lạ, vì lý do chính để sử dụng Qt là để tạo gui's. Cài đặt thư viện GL chắc chắn không khó, tôi chỉ muốn biết tại sao Hello World nhanh chóng và bẩn thỉu của tôi lại muốn nó.


2

viết:

yum provides */libGL.so 

sau khi cung cấp:

yum install mesa-libGL-devel mesa-libGLU-devel


1

Hệ thống của tôi là Ubuntu 16.04 trên máy tính x86 (với GPU NVIDIA GeForce).

Kiểm tra các tệp thư viện nằm trong /usr/lib/x86_64-linux-gnu

ls -al /usr/lib/x86_64-linux-gnu/libG*

Nếu bạn thấy liên kết bị hỏng, hãy cài đặt lại libgl1-mesa-glx

sudo apt install --reinstall libgl1-mesa-glx

Và, kiểm tra lại thư viện.


0

Trong trường hợp của tôi: Tôi đã cài đặt QT 32 bit lib trong Win10 64 bit và nó bị lỗi, tôi thay đổi thành tất cả 64 bit và trình tạo QT chạy trơn tru.


-1

Đã giải quyết vấn đề này chỉ một phút trước trong suse. Chỉ cần thực hiện bước sau đây và QTCreator sẽ hoạt động tốt.

sudo zypper install - kiểu mẫu devel_basis

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.