在 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
当我尝试制作项目时,我得到:
[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