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年前777ビュー
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
エキスパート
レビュー済み 1ヶ月前
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年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

質問に答えるためのガイドライン

関連するコンテンツ