It seems as though the GSDK has linking issues when attempting to build a UE4 linux dedicated server. Has anyone had any success doing this in the past?
This post from last year discusses similar issues, and was unfortunately left unresolved.
It seems as though the GSDK has linking issues when attempting to build a UE4 linux dedicated server. Has anyone had any success doing this in the past?
This post from last year discusses similar issues, and was unfortunately left unresolved.
After the consultation with the team, the linking issue is that our library is compiled against libstdc++, while Unreal by default uses bundled libc++. You may refer to https://answers.unrealengine.com/questions/720444/view.html.
Currently, this issue has been listed in the backlog and the team will work out a detailed documentation about integrating GSDK in UE4 on Linux, however, currently there is no ETA we can share. Please keep the track of documentation and blog updates on our website.
If possible, you may also try to compile GSDK library against libc++ by yourself to solve the link issue. Thanks for the understanding.
Any news on that backlog issue?
I'm currently building a dedicated UE4 server but I'm expecting to run into issues with this libstdc++/libc++ issue soon.
I'm not sure how far I am going to do this experiment as I'm only switching to Linux to get faster deploy times.
Maybe someone will have use of this information.
1.
First of all, I cloned the gsdk repo.
2.
I made the following changes to the GSDK_CPP_LINUX project:
General -> Platform Toolset -> Clang for Windows Subsystem for Linux
C/C++ -> General -> Compiler -> C Compiler: clang++-9
C/C++ -> General -> Compiler -> C++ Compiler: clang++-9
C/C++ -> Command Line -> Additional Options: -stdlib=libc++
3.
I installed Ubuntu as a sub-system in Windows and ran:
sudo apt-get install clang-tools-9 sudo apt-get install libc++-dev sudo apt-get install libc++abi-dev
I picked clang-9 since that's what Unreal 4.25 uses.
4.
I started Ubuntu (still sub-system) and verified that I could compile using libc++:
echo $'#include <iostream>\nusing namespace std;int main() { cout << "Hello, World!" << endl;}' > test.cpp
clang++-9 -stdlib=libc++ test.cpp
./a.out
5.
I built only the GSDK_CPP_LINUX project in Visual Studio and I got this static library:
libGSDK_CPP_Linux.a
I should be able to replace the .lib file reference in my Unreal project's Build.cs with this .a file. I will try that next, but there's a couple of other references I'm uncertain of.
3 People are following this question.