问题描述
我已将 Fedora 从 31 更新到 34,因此,在使用 GLFW 运行程序时,我在 Bad file descriptor
中收到错误 errno
。
我进行了一些实验:
- 侏儒
- 侏儒经典
- 使用 Xorg 的 Gnome
- i3(我常用的窗口管理器)
这是我运行的示例 C 文件:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <GLFW/glfw3.h>
int main()
{
if (!glfwInit()) {
printf("%s\n",strerror(errno));
}
else {
printf("GLFW Init OK\n");
}
glfwTerminate();
}
我编译它:
gcc -g $(pkg-config --cflags glfw3) -o myprog test.c $(pkg-config --static --libs glfw3) -I.
我在同一个目录中有 glad/gl.c
。
对于每个窗口管理器,我运行:
- ./myprog
- loginctl # 获取
- loginctl show-session -p 类型
结果如下:
在 Gnome 上:
> ./myprog
GLFW Init OK
> loginctl show-session 9 -p Type
Type=wayland
关于 Gnome 经典版:
> ./myprog
Bad file descriptor
> loginctl show-session 11 -p Type
Type=x11
在 Gnome 上使用 Xorg:
> ./myprog
Bad file descriptor
> loginctl show-session 14 -p Type
Type=x11
在 i3 上:
> ./myprog
Bad file descriptor
> loginctl show-session 16 -p Type
Type=x11
我当前安装的 glfw 版本是:
glfw-devel-1:3.3.4-1.fc34.x86_64
但是,当从 Github 克隆 glfw 并使用标记 3.3.4
时,我可以编译它并使用 X11 在窗口管理器上运行测试和示例。
我不知所措,有人知道 glfw 和 X11 发生了什么吗?还是其他地方的问题?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)