【发布时间】:2020-10-06 17:12:19
【问题描述】:
我正在尝试使用musl 工具链编译各种程序,例如 MariaDB。也就是说,编译完成后,我不希望对 glibc 或 GNU 的链接器有任何依赖。
到目前为止,我一直在使用 musl 的 GCC 包装器 musl-gcc 来编译东西。但是,对于像 MariaDB 这样的大型程序,我很难获得所有必要的库和头文件以及符号链接或为编译添加环境变量doesn't really help。
我在this GitHub repo 看到提到了building a cross-compiler targeting musl libc 以及其他文档和代码。来自交叉编译器的文档:
这为您提供了一个完整的、可重定位的 musl 定位工具链,具有 C++ 支持及其自己的库路径,您可以将第三方库安装到其中。
听起来这对我有帮助,但我不确定这与 musl 的 GCC 包装器有何不同,据我了解,后者只是改变了 GCC 查找库和标头等的位置。
最终,我不确定这个交叉编译器与 GCC 包装器有多大不同,以及它是否对我有用。当我可以符号链接到现有库并使用 GCC 包装器时,为什么我需要自己的库路径来安装第三方库?交叉编译器是我应该编译东西的方式吗,尤其是更大的代码库?
【问题讨论】:
-
现在只需在
docker run alpine编译 -
@KamilCuk 是的,这是一个选项。但是,我正在尝试运行一些 musl 与 glibc 编译程序的基准测试,并且所有 glibc 编译都是在 Debian 上完成的。所以为了保持一致性,我想把东西放在 Debian 上。
-
@peachykeen -- 但是您使用什么 Linux 发行版是否重要,因为您明确删除了平台级依赖项?如果你在 Alpine VM 上为 MUSL 构建,在 Debian VM 上为 glibc 构建,并且两个 VM 在同一主机上运行,那不是提供了一个公平的竞争环境吗?