我在我的Linux机器上使用Linux->Arm交叉构建工具链构建了一个Arm TensorFlow共享库libtensorflowlite_c.so
。
然后我切换到Arm平台,并尝试构建一个与libtensorflowlite_c.so
链接的应用程序。但是,链接步骤给了我几个GLIBC链接错误:
/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库构建的GLIBC更老,但是:错误输出中提到了几个GLIBC版本:GLIBC_2.33, GLIBC_2.32, GLIBC_2.34。这怎么可能呢?我希望只需要一个GLIBC版本?
在每个glibc版本中对每个符号进行版本控制是没有意义的,这将使所有glibc符号不可用,您将不得不坚持使用一个glibc版本。
符号有一个@GLIBC_version
,这是符号最后更改的版本。这样你就可以使用较新的glibc,如果符号没有改变,你可以在它上面使用旧的代码。
当符号以非向后兼容的方式改变时,只有当符号的版本被改变时,
您可以浏览https://abi-laboratory.pro/?view=timeline&l=glibc .