FAQ: Using existing binaries

Failing to link with an existing object file

There may be various issues here:

  1. First run the file command on the object(s):

    file foo.o

    The result must be consistent with the platform you're working on (e.g. ELF 64-bit LSB relocatable)

  2. If you get an error message like

    undefined reference to `__ctype_b'

    you need to change the source code of your application and recompile. Symbols beginning with __ should not be used at all if possible since they are only meant for internal glibc usage and are not exported any more in newer glibc releases.

    A workaround in the above case may be to replace the __ctype_b by *__ctype_b_loc()in your code.

Failing to start up with message "version `GLIBC_2.xx' not found"

The problem here is that the binary was built for a different Linux distribution (with a different - often newer - GLIBC version) than the one deployed at LRZ. The solution is to rebuild the program on the same version of the same distribution. Service Requests to update GLIBC on the LRZ systems will usually be denied, because essentially all other programs depend on GLIBC, and many would stop working if such an update were performed. Therefore, GLIBC upgrades are tied to major operating system updates, which happen about twice per decade.