Stand alone Linux player dependencies

I’m trying to run a Linux exported project on an old Unix distribution, and when I launch the execution I get the following error:

./aw.x86: /lib/i686/cmov/libc.so.6: version GLIBC_2.11’ not found (required by ./aw.x86)
./aw.x86: /usr/lib/libstdc++.so.6: versionGLIBCXX_3.4.11’ not found (required by ./aw.x86)
./aw.x86: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.14’ not found (required by ./aw.x86)

I have no permissions to install anything in the machine, so my question is: Is it possible to include these stand alone Linux player libraries (dependencies) inside my project exported files?

Any other ideas without installing or updating anything on the machine?

Thanks!

These are the C and C++ runtimes for the operating system: bundling/replacing them (particularly the C runtime) is unlikely to work as intended.
It looks like the target system is just too old.

Hi Tak!

Thanks for your reply. I have already given up trying to replace glibc on a running system, it seems impossible.
But, considering alternative solutions, it occurred to me that one solution might be to create a chroot environment to build and install recent version of glib, or even install Ubuntu 10.04 or another recent compatbile unix distribution.

I am thinking about starting with this howto:
http://devpit.org/wiki/Gnu_Toolchain/GLIBC/Building_GLIBC#Build_and_Install_GLIBC_in_a_chroot_env

My fear is that if I achieve to set up and run this solution, then maybe I can have problems with the gpu. Have you ever tried something like this? Do you think that can be possible?

Another solution could be use Wine, once again on a chroot controlled environment, because as I commented can not touch base system configuration. I do not know if you’ve ever used Wine in these circunstances, does it offer a good performance?

I’m not a linux expert, so any help, suggestion or clarification will be very welcomed.

Thank you very much!

Running into this problem while working with a server host – they run CentOS 6.6, which afaik can only use glibc 2.12. He’s reluctant to upgrade to CentOS 7 for just one game, so I’m hoping there’s a viable workaround. I can’t find any way to target an early version of glibc when building for Linux, but I’ve seen others recommend the chroot strategy. But my question is…

How would the Unity game know to target the lib in chroot?

One solution would be to copy the glibc and libstdc++ libraries of a newer system into a subfolder, including ld-linux.so.2.
Then you can run the game with LD_LIBRARY_PATH=/path/to/new/libraries /path/to/new/libraries/ld-linux.so.2 /path/to/game/aw.x86
You can find the libraries in these packages:
http://packages.ubuntu.com/trusty/libstdc 6
http://packages.ubuntu.com/trusty/libc6
http://packages.ubuntu.com/trusty/libgcc1 (if that one needs to be newer too)

Debian packages can be extract with ar x package.deb. The files to be installed will be in data.tar.*z.

But expect things not not work properly.

2 Likes

I confirm that @ 's solution worked for me. Fortunately, everything worked properly. I’m using Unity 5.