与 Arm 上的 TensorFlow 链接:GLIBC_2.32、GLIBC_2.33、GLIBC_2.34 - 哪个?

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

我在我的 Linux 机器上使用 Linux->Arm crossbuild toolchain.

构建了一个 Arm TensorFlow 共享库 libtensorflowlite_c.so

然后我切换到 Arm 平台并尝试构建一个应用 linked libtensorflowlite_c.so。但是,link 步骤给了我几个 GLIBC link 错误:

/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'

我知道我的 Arm 系统已经过时了 GLIBC,比构建 TensorFlow lib 的系统更旧,但是:错误输出中提到了几个 GLIBC 版本:GLIBC_2.33,GLIBC_2.32, GLIBC_2.34.怎么可能?我希望只需要一个 GLIBC 版本?

在每个 glibc 版本中对每个符号进行版本控制是没有意义的,这会使 所有 glibc 符号不可用,您将不得不坚持使用一个 glibc 版本。

该符号有一个 @GLIBC_version,这是该符号 上次更改 的版本。这样你就可以使用更新的glibc,如果符号没有改变,你可以使用旧代码。

当符号以non-backward-compatible方式改变时,只有符号的版本发生改变。

您可以浏览 https://abi-laboratory.pro/?view=timeline&l=glibc .