启用多线程以使用 std::thread:操作不允许

启用多线程以使用 std::thread:操作不允许

我通常只使用 Linux 机器来工作,它们往往是较旧的低功率机器。实际上,我在一台 Beefer 机器上安装了 Arch Linux,并决定尝试在上面运行游戏。我下载了办公室管理 101 演示看看我是否可以让它运行。我解压了它,进入文件夹并运行$ chmod a+x OfficeManagement101,然后:

$ ./OfficeManagement101 
config file: /home/me/Downloads/om101-linux/config.json
jar: /home/me/Downloads/om101-linux/om101_drm_free.jar
mainClass: eu/tulevik/officemanagement101/desktop/DesktopLauncher
vmArg 0: -Xmx1G
jre: /home/me/Downloads/om101-linux/jre/lib/amd64/server/libjvm.so
Exception in thread "LWJGL Application" java.lang.ExceptionInInitializerError
    at com.badlogic.gdx.backends.lwjgl.LwjglGraphics.setVSync(LwjglGraphics.java:555)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:122)
Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    at org.lwjgl.opengl.LinuxDisplay.getAvailableDisplayModes(LinuxDisplay.java:954)
    at org.lwjgl.opengl.LinuxDisplay.init(LinuxDisplay.java:738)
    at org.lwjgl.opengl.Display.<clinit>(Display.java:138)
    ... 2 more
AL lib: (EE) alc_cleanup: 1 device not closed

我在互联网上进行了一些搜索$ sudo pacman -S xorg-xrandr,屏幕变黑了,但随后我收到了一个新的错误:

$ ./OfficeManagement101 
config file: /home/me/Downloads/om101-linux/config.json
jar: /home/me/Downloads/om101-linux/om101_drm_free.jar
mainClass: eu/tulevik/officemanagement101/desktop/DesktopLauncher
vmArg 0: -Xmx1G
jre: /home/me/Downloads/om101-linux/jre/lib/amd64/server/libjvm.so
terminate called after throwing an instance of 'std::system_error'
  what():  Enable multithreading to use std::thread: Operation not permitted
Aborted (core dumped)

这让我真的不知道下一步该做什么,这是我需要在 Linux 中修复的问题吗?这是否是两者之间的一个 C++ 问题,有什么帮助吗?

答案1

what():启用多线程以使用 std::thread:操作不允许

这意味着该程序(或其中的某些部分)未使用 GCC 的-pthread选项(链接到 Glibc 中的 Pthreads 实现)进行链接。

可能可以工作,但实际上正确的解决方案是使用以下选项正确构建程序-pthread

LD_PRELOAD=/usr/lib64/libpthread.so.0 ./OfficeManagement101 

相关内容