Unreal Engine 4 Build Failing - error while loading shared libraries

0

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

asked 3 years ago765 views
3 Answers
0
Accepted Answer

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]

https://stackoverflow.com/questions/480764/linux-error-while-loading-shared-libraries-cannot-open-shared-object-file-no-s

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:

answered 3 years ago
profile picture
EXPERT
reviewed a month ago
0

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

answered 3 years ago
0

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

answered 3 years ago

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions