gpt4 book ai didi

rust - 我如何定位我的 Rust 应用程序及其对 musl 的依赖?

转载 作者:行者123 更新时间:2023-11-29 08:19:42 30 4
gpt4 key购买 nike

我正在尝试在 Alpine 上运行我的 rust 应用程序,但我在使用 musl 作为目标或使用 glibc 的兼容层时遇到了问题。当我尝试从 libc6-compat 使用时,我遇到了这个问题:

Error relocating my_app: __register_atfork: symbol not found
Error relocating my_app: __res_init: symbol not found

这是错误还是兼容层根本不支持此符号?

当我尝试以 musl 为目标时,我遇到了一个不同的问题。我无法直接在 musl 上编译我的应用程序,因为不支持 rust 编译器的某些功能。我所做的是在一个以 musl 为目标的 debian 镜像上进行编译,并将我的二进制文件移动到我的 alpine 镜像中。看起来即使是针对 musl,链接器在构建时仍然使用一些 glibc 变体,我对 C 的一点经验并不能帮助我确定这是否会成为问题。我的应用程序依赖于我通过 apk 安装的 glib2当它启动时失败并显示以下内容:

**
GLib-GObject:ERROR:../gobject/gtype.c:2743:g_type_register_static: assertion failed: (static_quark_type_flags)
Aborted

我试图直接在我的 alpine 容器中编译一个 C 示例并且它在那里工作,所以这让我相信我在我的 glibc 容器中的交叉编译/链接方面遇到了一些问题。关于如何解决这个问题的任何想法?

注意:我可以只使用 glibc 容器,但我所知道的容器都没有最小的包管理器。 debian 变体安装了太多我的依赖项不需要的英国媒体报道软件(我不明白为什么他们会根据需要在包管理器中插入可选的依赖项)使图像大于 1GB,而我的 alpine 版本是 100MB。与 RPM 变体相同的模式。我可以接受大于 100MB 的图像,但不能超过 1GB。

最佳答案

发现可以在 alpine 上编译,前提是您为编译器指定一个特殊标志以使用此处找到的动态链接: https://github.com/rust-lang/rust/pull/58575#issuecomment-496026747

还有标志:RUSTFLAGS='-C target-feature=-crt-static'

关于rust - 我如何定位我的 Rust 应用程序及其对 musl 的依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58766740/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com