admin管理员组文章数量:1345307
Unfortunately a project I'm working on doesn't work on some platforms. It crashes with an error like
/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found
/lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found
I followed this hivemind advice to check which GLIBC versions the binary compatible with:
$ objdump -T libmylib_rs.so | grep -Eo 'GLIBC_\S+' | sort -u
GLIBC_2.10)
GLIBC_2.14)
GLIBC_2.17)
GLIBC_2.18)
GLIBC_2.2.5)
GLIBC_2.25)
GLIBC_2.28)
GLIBC_2.29)
GLIBC_2.3)
GLIBC_2.3.2)
GLIBC_2.3.4)
GLIBC_2.33)
GLIBC_2.34)
GLIBC_2.4)
GLIBC_2.7)
GLIBC_2.9)
Unfortunately, GLIBC 2.31 isn't in this list. That's pretty weird, because GLIBC 2.29 and 2.33 are supported. How that could be?
The lib uses clock_gettime
which was removed in 2.26 according to that report, but it wasn't re-added back. It also uses pthread_attr_destroy
and pthread_attr_init
that were removed in 2.31. How it works on later versions? Any "hello world" app which uses Rust's tokio
lib uses these symbols from libc.
Furthermore, I can build my code on a system with GLIBC 2.31 and run it there or on systems with newer GLIBC, but not vice versa.
I cannot fix that issue until I understand it.
本文标签: rust tokioHow to understand GLIBC incompatibilityStack Overflow
版权声明:本文标题:rust tokio - How to understand GLIBC incompatibility? - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1743804599a2541943.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论