在 Fedora 27 中构建 glfw 期间出现 link 错误

errors during link when building glfw in fedora 27

当我尝试制作项目时,我得到:

[pepe@localhost glfw-3.2.1]$ make
....

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-redhat-linux/7/../../../libXinerama.so when searching for -lXinerama
/usr/bin/ld: skipping incompatible //lib/libXinerama.so when searching for -lXinerama
/usr/bin/ld: skipping incompatible //usr/lib/libXinerama.so when searching for -lXinerama
/usr/bin/ld: cannot find -lXinerama
collect2: error: ld returned 1 exit status 
make[2]: *** [examples/CMakeFiles/wave.dir/build.make:129: examples/wave] Error 1
make[1]: *** [CMakeFiles/Makefile2:185: examples/CMakeFiles/wave.dir/all] Error 2
make: *** [Makefile:130: all] Error 2

我安装了 xinerama,但显然无法 link 使用 make。

看到所有这些 "skipping incompatible" 消息了吗?那是因为那些库有错误的指令集。

在我看来,它似乎是在针对 64 位库构建 32 位代码。反之亦然。

这是我在 Fedora 系统上搜索库时得到的结果。您需要为您的构建类型安装正确的“*-devel”包。你不能同时安装 i686 和 x86_64 开发包。

$ sudo dnf list 'libXine*'
Installed Packages
libXinerama.i686                                            1.1.3-9.fc27                                    @fedora
libXinerama.x86_64                                          1.1.3-9.fc27                                    @fedora
Available Packages
libXinerama-devel.i686                                      1.1.3-9.fc27                                    fedora 
libXinerama-devel.x86_64                                    1.1.3-9.fc27                                    fedora

这适用于 glfw-3.2.1 :

dnf install mesa-libGL-devel.x86_64 libXi-devel.x86_64 libXcursor-devel.x86_64 doxygen libXrandr-devel.x86_64 libXmu-devel libXinerama-devel.x86_64


cd glfw-3.2.1/
mkdir build
cd build/
cmake ../
make