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

已提問 3 年前檢視次數 857 次
3 個答案
0
已接受的答案

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:

已回答 3 年前
profile picture
專家
已審閱 3 個月前
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

已回答 3 年前
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

已回答 3 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南