【发布时间】:2016-03-04 18:46:53
【问题描述】:
所以我对 linux 还很陌生,并试图编译一个 openGL 项目,该项目在带有 GCC++ 的 CodeBlocks 中使用 GLEW 和 GLFW。
如下所示,我将链接器标志设置为 -lglfw -lGLEW -lGL,并尝试了各种排列,包括使用和不使用 -lGLU 的不同顺序。
这些都会导致链接器错误
找不到-lGL
或完整的构建日志
g++ -L/usr/lib64 -L/usr/lib -o Voxel .objs/Block.o ... other object files ... .objs/World.o -lglfw -lGLEW -lGL
/usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/5.1.1/../../../libGL.so when searching for -lGL
/usr/bin/ld: skipping incompatible /lib/libGL.so when searching for -lGL
/usr/bin/ld: skipping incompatible /usr/lib/libGL.so when searching for -lGL
/usr/bin/ld: cannot find -lGL
collect2: error: ld returned 1 exit status
我发现 this 类似问题(以及许多其他论坛)并尝试了建议的操作,这些操作似乎暗示了不同的标志顺序和/或错误的符号链接(我不知道如何/如果我需要删除并重新添加)。
下面的命令确认我已经安装了 libGL。
dnf install libGL
我也试过
dnf install mesa-*
并安装了一些额外的软件包,但无济于事。
表演
locate libGL
给我以下内容
/usr/lib/libGL.la
/usr/lib/libGL.so
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.2.0
/usr/lib/libGL.so.358.16
/usr/lib/libGLESv1_CM.so
/usr/lib/libGLESv1_CM.so.1
/usr/lib/libGLESv1_CM.so.358.16
/usr/lib/libGLESv2.so
/usr/lib/libGLESv2.so.2
/usr/lib/libGLESv2.so.358.16
/usr/lib/libGLdispatch.so.0
/usr/lib64/libGL.la
/usr/lib64/libGL.so
/usr/lib64/libGL.so.1
/usr/lib64/libGL.so.358.16
/usr/lib64/libGLESv1_CM.so
/usr/lib64/libGLESv1_CM.so.1
/usr/lib64/libGLESv1_CM.so.358.16
/usr/lib64/libGLESv2.so
/usr/lib64/libGLESv2.so.2
/usr/lib64/libGLESv2.so.358.16
/usr/lib64/libGLEW.so
/usr/lib64/libGLEW.so.1.10
/usr/lib64/libGLEW.so.1.10.0
/usr/lib64/libGLEWmx.so
/usr/lib64/libGLEWmx.so.1.10
/usr/lib64/libGLEWmx.so.1.10.0
/usr/lib64/libGLU.so
/usr/lib64/libGLU.so.1
/usr/lib64/libGLU.so.1.3.1
/usr/lib64/libGLdispatch.so.0
/usr/share/doc/libGLEW
/usr/share/doc/libGLEWmx
/usr/share/doc/libGLEW/LICENSE.txt
/usr/share/doc/libGLEWmx/LICENSE.txt
/usr/share/licenses/mesa-libGL
/usr/share/licenses/mesa-libGLES
/usr/share/licenses/mesa-libGL/COPYING
/usr/share/licenses/mesa-libGLES/COPYING
/var/cache/PackageKit/metadata/updates/packages/mesa-libGL-11.0.6-1.20151122.fc23.x86_64.rpm
/var/cache/PackageKit/metadata/updates/packages/mesa-libGLES-11.0.6-1.20151122.fc23.x86_64.rpm
我正在运行 Fedora 23,并且有一个安装了专有 nVidia 驱动程序的 nVidia GeForce GTX 750Ti。
简而言之,如何在 Linux 上将 OpenGL、GLFW 和 GLEW 与 GCC++ 链接?
【问题讨论】:
-
试试这个:
dnf install freeglut-devel。它对我有用。