Unreal Engine 4 Build Failing - error while loading shared libraries


Hello all,

I have been using the "Multiplayer with Blueprints" plugin to create a multiplayer game in UE4 using GameLift with success. However, I would like to use an additional plugin in my project (this one) yet every build that uses this plugin crashes on start-up on the remote machine. When I create a fleet with a build that utilizes this plugin it crashes on the ACTIVATING step with no logs, and this is the message I get when I attempt to run the build after ssh'ing into the machine: error while loading shared libraries: libmpg123.so.0: cannot open shared object file: No such file or directory

libmpg123.so is present in the build in the directory <build name>\Engine\Plugins\Marketplace\AudioAnalyzer\Source\Thirdparty\MPG123\Libraries\Linux.

Is there a way I can direct the program to this file properly or is this indicative of deeper incompatibilities between the plugin and GameLift servers?

Thanks so much for the help, Tom

gefragt vor 3 Jahren858 Aufrufe
3 Antworten
Akzeptierte Antwort

Where is your executable in relation to this lib?

By default, ldconfig looks in /lib, /usr/lib, and directories listed in /etc/ld.so.conf and $LD_LIBRARY_PATH. If your library is somewhere else, you can either add the directory on its own line in /etc/ld.so.conf, append the library's path to $LD_LIBRARY_PATH, or move the library into /usr/lib. Then run ldconfig [or set the rpath correctly during linking]


Basically it sounds like on gamelift the path to the library is not being resolved correctly. If you are setting the rpath at link time, ensure its a relative path or a path that makes sense on GameLift (running out of /local/game ?)

Do you have a mechanism to test your gamelift package prior to upload ie via GameLift local?

Some useful references:

beantwortet vor 3 Jahren
profile picture
überprüft vor 4 Monaten

Hi Pan,

Thanks for your detailed response. Copying the library in question to /usr/lib and running ldconfig before running seems to have done the trick. My last question would be this: is it possible to do the above without needing to ssh into the the machine and copy the files/run ldconfig manually each time I upload a build? Like change the /usr/lib directory for each fleet I create automatically?

Thanks so much for your help, Tom

beantwortet vor 3 Jahren

You should be able to use the install.sh mechanism to prepare your instance as required. This is a great way to install libs and add things to the path.

See https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-build-cli-uploading.html#gamelift-build-cli-uploading-install

beantwortet vor 3 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen