# Linux compatibility GLIBC_2.2.5



## Ben (Sep 10, 2014)

Hi,

I am trying to use a library which is compiled for Linux.

I activated the Linux Compatibility and made several things work, but now I'm stuck with this message when actually using the library:


```
/usr/lib/librt.so.1: version GLIBC_2.2.5 required by (...)
```

I am not very familiar with the Linux compatibility. Is there a way to get around this error?

I installed the following ports:

```
compat6x-amd64-6.4.604000.200810_3 Convenience package to install the compat6x libraries
linux_base-f10-10_7            Base set of packages needed in Linux mode for i386/amd64 (Linux Fedora 10)
```

Thanks for hints.


----------



## SirDice (Sep 10, 2014)

The problem with the current Linux emulation is that it's getting rather old. You need a newer version to be able to run that application. You may want to try emulators/linux_base-c6 instead but I'm not sure if it works correctly or if it's even new enough for your application.


----------



## Ben (Sep 10, 2014)

I installed this port but the problem persists. So no chance it seems.


----------



## abishai (Sep 11, 2014)

https://github.com/xmj/linux-ports here is centOS 6.5 userland.

edit: Just found maintainer bumped emulators/linux_base-c6 to centOS 6.4. I suppose you did something wrong, it definitely has newer glibc.


----------



## Ben (Sep 11, 2014)

Hm, I set 2.6.18 via sysctl, installed the port. In this case I will play around a little more. Thanks.

EDIT: Nope, can't get it to work. Reboot doesn't help.


----------



## qsecofr (Sep 12, 2014)

Hi,
Have you run `ldd` on the binary program file requiring librt.so.1?  The output should tell you which shared libraries are installed & compatible.  The handbook offered some pretty detailed info for running Linux binaries.  In my case, 

```
$ ldd /usr/local/bin/some_directory/a_linux_program | more
...
        libpthread.so.0 => /lib/libpthread.so.0 (0x2b03f000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x2b551000)
        librt.so.1 => /lib/librt.so.1 (0x2b5e9000)
...
$ ls -la /compat/linux/lib/librt*                      
-rwxr-xr-x  1 root  wheel  39676 Nov 21  2013 /compat/linux/lib/librt-2.12.so
lrwxr-xr-x  1 root  wheel     13 Nov 21  2013 /compat/linux/lib/librt.so.1 -> librt-2.12.so
$ pkg which /compat/linux/lib/librt-2.12.so
/compat/linux/lib/librt-2.12.so was installed by package linux_base-c6-6.5
$ strings /compat/linux/lib/librt-2.12.so | grep 'GLIBC'
GLIBC_2.1
GLIBC_2.2
GLIBC_2.3.4
GLIBC_2.4
GLIBC_2.7
GLIBC_PRIVATE
GLIBC_2.0
GLIBC_2.1.3
GLIBC_2.3.2
```

There were some shared libs that came along with the tarball of the Linux program I run.  Those that emulators/linux_base-c6-6.5 did not install, I copied manually into /compat/linux/lib/.

Also, as (at least) one post on this forum notes, Linux programs run in their own shell.  That turned out to be the final piece of the puzzle for me.

```
$ more ~/a_linux_program
#!/compat/linux/bin/sh
/usr/local/bin/some-directory/a_linux_program;
exit 0;
```

If the shared library must specifically list GLIBC_2.2.5, then I've got to imagine there's one out there somewhere..
Hope you get that program to run..  Good luck!


----------



## Ben (Sep 13, 2014)

Running `ldd` on the library I only get this:


```
ldd: res_fax_digium.so: not a FreeBSD ELF shared object
```


----------



## qsecofr (Sep 15, 2014)

I hadn't run into that issue.  But it leads me to wonder if the handbook addresses it with `brandelf`.  The relevant chapter is here
https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html.


----------

