Включить многопоточность для использования std::thread: Операция не разрешена

Включить многопоточность для использования std::thread: Операция не разрешена

Обычно я использую только машины linux для работы, они, как правило, старые, с низким энергопотреблением. На самом деле у меня есть arch linux на машине beefer, и я решил попробовать запустить на ней игру. Я скачалофисное управление 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: Операция не разрешена

Это означает, что программа (или какая-то ее часть) не была скомпонована с использованием -pthreadопции GCC, которая связывается с реализацией Pthreads в Glibc.

Этотмощьработать, но на самом деле правильным решением будет правильная сборка программы с опцией -pthread:

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

Связанный контент