c++ - ld 找不到 glfw3

标签 c++ linux ubuntu opengl glfw

我正在尝试构建 the OpenGL Super Bible 7th edition code samples在 Ubuntu 16.04 上。首先,我必须运行 cmake,这似乎可行,然后我必须运行 make 进行编译。

我相信我已经安装了 glfw3 和 Mesa OpenGL 包。当我执行 cmake 时(在安装 libglfw3 和 libglfw3-dev 之后),我收到消息说已找到 OpenGL 和 GLFW3:

-- Found OpenGL: /usr/lib/libGL.so   
-- Checking for module 'glfw3'
--   Found glfw3, version 3.1.2

但是当我在 cmake 完成后执行 make 时,我得到这个错误:

.../sb7code-master/src/sb7/sb7object.cpp: In member function ‘void sb7::object::render_sub_object(unsigned int, unsigned int, unsigned int)’:
.../sb7code-master/src/sb7/sb7object.cpp:212:77: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
                                          (void*)sub_object[object_index].first,
                                                                          ^
[  3%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7shader.cpp.o
[  4%] Building CXX object CMakeFiles/sb7.dir/src/sb7/sb7textoverlay.cpp.o
[  4%] Building C object CMakeFiles/sb7.dir/src/sb7/gl3w.c.o
[  5%] Linking CXX static library lib/libsb7.a
[  5%] Built target sb7
Scanning dependencies of target wrapmodes
[  6%] Building CXX object CMakeFiles/wrapmodes.dir/src/wrapmodes/wrapmodes.cpp.o
[  7%] Linking CXX executable ../bin/wrapmodes
/usr/bin/ld: cannot find -lglfw3
collect2: error: ld returned 1 exit status
CMakeFiles/wrapmodes.dir/build.make:95: recipe for target '../bin/wrapmodes' failed
make[2]: *** [../bin/wrapmodes] Error 1
CMakeFiles/Makefile2:99: recipe for target 'CMakeFiles/wrapmodes.dir/all' failed
make[1]: *** [CMakeFiles/wrapmodes.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

于是我尝试查看是否安装了glfw3。我是Linux新手,所以我在网上找到了这些命令:

sudo  pkg-config --libs glfw3

吐出:

-lglfw

而当我输入 sudo pkg-config --libs glfw 时最后没有 3 我得到:

Package glfw was not found in the pkg-config search path.
Perhaps you should add the directory containing `glfw.pc'
to the PKG_CONFIG_PATH environment variable
No package 'glfw' found

我试过:sudo ldconfig -p | grep "glfw"

吐出:

libglfw.so.3 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libglfw.so.3

相比之下,sudo ldconfig -p | grep "glfw3" 什么都不返回。

我下载的这个 cmake 文件是否设置错误以告诉链接器 -lglfw3,而它应该告诉它 -lglfw?还是我的库路径未正确定义?

最佳答案

错误/过时的 CMakeLists.txt

Line 28 of CMakeLists.txt是:

set(COMMON_LIBS sb7 glfw3 X11 Xrandr Xinerama Xi Xxf86vm Xcursor GL rt dl)
                        ^ wat

应该是:

set(COMMON_LIBS sb7 glfw X11 Xrandr Xinerama Xi Xxf86vm Xcursor GL rt dl)
                        ^ no 3

更好的是他们应该使用 find_package() to find GLFW .

关于c++ - ld 找不到 glfw3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48119611/

相关文章:

c++ - 你如何在 XCode + C++ 中使用 std::vector?

node.js - 如何基于 GitHub webhook 自动化部署 docker?

ubuntu - 如何在 Ubuntu 中安装 Guake(下拉)终端

c++ - 如何有效地操作很长的 vector ?

c++ - 数字与数字数组的差之和

c++ - 英特尔引脚 : correctly continuing execution after RECEIVED_ACCESS_FAULT exception

c++ - 在差异进程的线程之间发送信号

c++ - 如何使用 mplayer 播放到内存

python - 如何实现python aiogram bot的自动重载?

node.js - 使用哪个 Vagrant Ubuntu 盒子来安装最新的 Node.js?