libsdl-org / SDL

Simple Directmedia Layer
https://libsdl.org
zlib License
9.71k stars 1.8k forks source link

Steamcmd #7841

Closed QuintenQVD0 closed 1 year ago

QuintenQVD0 commented 1 year ago

Hello and sorry for bothering you.

I am trying to use steamcmd a project from Valve to download steam dedicated servers. It looks like they already moved to SDL v3, as nowadays this error is coming up:

dlmopen libSDL3.so.0 failed: libSDL3.so.0: cannot open shared object file: No such file or directory

I tried placing the libSDL3.so.0 and libSDL3.so.0.0.0 from your GitHub actions (ubuntu 20.04 as we run debian 11 and it is based on that) artifacts to the linux32 and linux64 bit folder, and it seems not to care about what is in the 64 bit folder but in the 32 bit folder it gives the error dlmopen libSDL3.so.0 failed: libSDL3.so.0: wrong ELF class: ELFCLASS64 I can also not install it yet over apt as this package Debian link here is not yet at v3

So I am currently trying to build this project for 32 bit. I added those packages to the apt install gcc-multilib g++-multilib and I added those extra flags: -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 workflow

But I get this error

CMakeFiles/SDL3-shared.dir/src/core/linux/SDL_ibus.c.o -c /home/runner/work/SDL/SDL/src/core/linux/SDL_ibus.c
/usr/include/glib-2.0/glib/gtypes.h:463:3: error: static_assert failed due to requirement 'sizeof(unsigned long long) == sizeof(unsigned long)' "Expression evaluates to false" [clang-diagnostic-error]
  G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
  ^
/usr/include/glib-2.0/glib/gmacros.h:738:31: note: expanded from macro 'G_STATIC_ASSERT'
#define G_STATIC_ASSERT(expr) _Static_assert (expr, "Expression evaluates to false")
                              ^
1661 warnings and 1 error generated.
Error while processing /home/runner/work/SDL/SDL/src/core/linux/SDL_ibus.c.
Suppressed 1661 warnings (1661 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.

I know that this is not your fault as my guess would be that steamcmd uses this project as a submodule and is at the main branch, so they build with v3.

Is there anything I or you can do, as these errors are preventing apparently some users from connecting their server with the steam network.

madebr commented 1 year ago

I can reproduce with the debian:11 docker container. It works with docker:12 though.

My commands, with SDL mounted at /src:

dpkg --add-architecture i386
apt-get update -y
apt-get install -y cmake ninja-build gcc-multilib g++-multilib libibus-1.0-dev
cmake -S /src -B /build -GNinja -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32
cmake --build /build

I think you should create a bug report with the debian organization instead.

As a workaround, configure SDL with -DSDL_IBUS=FALSE.

slouken commented 1 year ago

steamcmd doesn't actually use SDL, it's being loaded by the Steam code as an optional path, but it's not necessary. Please report connectivity issues on the Steam discussion groups.

Thanks!

QuintenQVD0 commented 1 year ago

Already thank you for your help! Placing the 32 bit libSDL3.so.0 and libSDL3.so.0.0.0 file in the steamcmd/linux32 folder fixt steamcmd complaining about them.

CodeAnthem commented 1 year ago

Already thank you for your help! Placing the 32 bit libSDL3.so.0 and libSDL3.so.0.0.0 file in the steamcmd/linux32 folder fixt steamcmd complaining about them.

Having same issue, from where did you get libSDL3.so.0 and libSDL3.so.0.0.0 ?

QuintenQVD0 commented 1 year ago

Already thank you for your help! Placing the 32 bit libSDL3.so.0 and libSDL3.so.0.0.0 file in the steamcmd/linux32 folder fixt steamcmd complaining about them.

Having same issue, from where did you get libSDL3.so.0 and libSDL3.so.0.0.0 ?

It is not that steam crashes but it will give the error. but you can download them out of the release tab here https://github.com/MC-Plugin-compiler/SDL/ (out of the 32 bit one). Note that this is not offical

CodeAnthem commented 1 year ago

Already thank you for your help! Placing the 32 bit libSDL3.so.0 and libSDL3.so.0.0.0 file in the steamcmd/linux32 folder fixt steamcmd complaining about them.

Having same issue, from where did you get libSDL3.so.0 and libSDL3.so.0.0.0 ?

It is not that steam crashes but it will give the error. but you can download them out of the release tab here https://github.com/MC-Plugin-compiler/SDL/ (out of the 32 bit one). Note that this is not offical

Thanks, but it's strange, I downloaded the SDL3-3.0.0-Linux-x86.tar.gz and added the libSDL3.so.0 to /container/steamcmd/linux32/ still getting the error, also downloaded the x64 package and uploaded files into the linux64 directory. Ended up even copying all 3 libSDL3.so* files into both directories, still getting same error: dlmopen libSDL3.so.0 failed: libSDL3.so.0: cannot open shared object file: No such file or directory any idea?

QuintenQVD0 commented 1 year ago

Already thank you for your help! Placing the 32 bit libSDL3.so.0 and libSDL3.so.0.0.0 file in the steamcmd/linux32 folder fixt steamcmd complaining about them.

Having same issue, from where did you get libSDL3.so.0 and libSDL3.so.0.0.0 ?

It is not that steam crashes but it will give the error. but you can download them out of the release tab here https://github.com/MC-Plugin-compiler/SDL/ (out of the 32 bit one). Note that this is not offical

Thanks, but it's strange, I downloaded the SDL3-3.0.0-Linux-x86.tar.gz and added the libSDL3.so.0 to /container/steamcmd/linux32/ still getting the error, also downloaded the x64 package and uploaded files into the linux64 directory. Ended up even copying all 3 libSDL3.so* files into both directories, still getting same error: dlmopen libSDL3.so.0 failed: libSDL3.so.0: cannot open shared object file: No such file or directory any idea?

You have to place the .so.0 and the .so.0.0.0 but this must be done on linux and not over windows as windows will mess up the symlink