运行Qt Creator出现cannot find -lGL的问题的解决
第一种: 如果不依赖openGL,为什么要链接openGL呢?首先在链接参数里加额外-lGL对生成的程序并没有影响,你的程序里没有调用openGL的方法,不会有任何额外的代码链接进去。而Qt是一个跨平台的库,里面包含一些3D的库。要Qt Creator非常智能地根据程序生成依赖,这个有点难,也没必要。所以我觉得作者干脆把这些常用的库都加到链接参数里,一了百了。
这些预先定好的参数,按平台放在安装目录的mkspecs目录的,比如我的就在opt/Qt5.7.0/5.7/gcc_64/mkspecs。存细看链接参数,你会发现
-I/opt/Qt5.7.0/5.7/gcc_64/mkspecs/linux-g++这要的路径,这是Qt的跨平台配置。我的机子上,在
/opt/Qt5.7.0/5.7/gcc_64/mkspecs/common/linux.conf可以找到这样的配置,删除这一句
#QMAKE_LIBS_OPENGL = -lGL**
qmake configuration for common linux
QMAKE_PLATFORM += linux
include(unix.conf)
QMAKE_CFLAGS_THREAD += -D_REENTRANT
QMAKE_CXXFLAGS_THREAD += $$QMAKE_CFLAGS_THREAD
QMAKE_LFLAGS_GCSECTIONS = -Wl,–gc-sections
QMAKE_LFLAGS_REL_RPATH = -Wl,-z,origin
QMAKE_REL_RPATH_BASE = $ORIGIN
QMAKE_INCDIR =
QMAKE_LIBDIR =
QMAKE_INCDIR_X11 =
QMAKE_LIBDIR_X11 =
QMAKE_INCDIR_OPENGL =
QMAKE_LIBDIR_OPENGL =
QMAKE_INCDIR_OPENGL_ES2 =
Q
M
A
K
E
I
N
C
D
I
R
O
P
E
N
G
L
Q
M
A
K
E
L
I
B
D
I
R
O
P
E
N
G
L
E
S
2
=
QMAKE_INCDIR_OPENGL QMAKE_LIBDIR_OPENGL_ES2 =
QMAKEINCDIROPENGLQMAKELIBDIROPENGLES2=QMAKE_LIBDIR_OPENGL
QMAKE_INCDIR_EGL =
QMAKE_LIBDIR_EGL =
QMAKE_INCDIR_OPENVG =
QMAKE_LIBDIR_OPENVG =
QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 = -lXext -lX11 -lm
QMAKE_LIBS_NIS = -lnsl
QMAKE_LIBS_EGL = -lEGL
QMAKE_LIBS_OPENGL = -lGL
QMAKE_LIBS_OPENGL_ES2 = -lGLESv2
QMAKE_LIBS_OPENVG = -lOpenVG
QMAKE_LIBS_THREAD = -lpthread
QMAKE_INCDIR_WAYLAND =
QMAKE_LIBS_WAYLAND_CLIENT = -lwayland-client
QMAKE_LIBS_WAYLAND_SERVER = -lwayland-server
QMAKE_LIBDIR_WAYLAND =
QMAKE_DEFINES_WAYLAND =
QMAKE_WAYLAND_SCANNER = wayland-scanner
QMAKE_AR = ar cqs
QMAKE_OBJCOPY = objcopy
QMAKE_NM = nm -P
第二种:终端输入sudo apt-get install libgl1-mesa-dev