Home > Blockchain >  Linking with TensorFlow on Arm: GLIBC_2.32, GLIBC_2.33, GLIBC_2.34 - which one?
Linking with TensorFlow on Arm: GLIBC_2.32, GLIBC_2.33, GLIBC_2.34 - which one?

Time:05-21

I've built an Arm TensorFlow shared library libtensorflowlite_c.so on my Linux machine using the Linux->Arm crossbuild toolchain.

Then I switched to Arm platform and tried to build an app linked with libtensorflowlite_c.so. However, the link step gives me several GLIBC link errors:

/usr/bin/ld: libtensorflowlite_c.so: undefined reference to `fstat@GLIBC_2.33'
/usr/bin/ld: libtensorflowlite_c.so: undefined reference to `__libc_single_threaded@GLIBC_2.32'
/usr/bin/ld: libtensorflowlite_c.so: undefined reference to `pthread_join@GLIBC_2.34'

I understand that my Arm system has outdated GLIBC, older than the one from the TensorFlow lib was built with, however: there are several GLIBC versions mentioned in the error output: GLIBC_2.33, GLIBC_2.32, GLIBC_2.34. How can that be? I would expect only one GLIBC version required?

CodePudding user response:

There is no point in versioning each symbol in each glibc release, it would make all glibc symbols unavailable and you would have to stick to exactly one glibc version.

The symbol has a @GLIBC_version which is the version the symbol was last changed. That way you can use newer glibc, and if the symbol does not change, you can use old code on it.

When the symbol changes in a non-backward-compatible way, only then the version of the symbol is changed.

You can browse https://abi-laboratory.pro/?view=timeline&l=glibc .

  • Related