在哪些系统上我应该更喜欢“musl”或“gnu”二进制文件?

bal*_*ton 11 linux

musl几个 Rust 实用程序包括带有和后缀的 Linux 二进制文件gnu,这让我想知道我应该使用哪一个,为什么?

例子:

Eva*_*oll 4

选择 Musl 的最令人信服的原因是它简单、小巧,并且拥有容器空间中 go to 的标题,或者具有静态链接的可执行文件(如 Rust 和 Go)。这是有技术原因的

\n

GNU C 库往往具有更多的复杂性,主要围绕平台的汇编优化和向后兼容性。这是大多数 Linux 发行版使用的解决方案。

\n

至于你给出的例子,sd

\n
    \n
  • 在尺寸上,

    \n
      \n
    • GNU 版本是979 KB
    • \n
    • 穆斯林版本是1020 KB
    • \n
    \n
  • \n
  • 连锁,

    \n
      \n
    • GNU:如果您查看sd-v1.0.0-x86_64-unknown-linux-gnu.tar.gz with,ldd您会发现它动态链接到libc.so.6。\n
      \xe2\x9d\xaf ldd sd\n    linux-vdso.so.1 (0x00007ffc8efcf000)\n    libgcc_s.so.1 => /lib/x86_64-linux gnu/libgcc_s.so.1 (0x00007f1cad12b000)\n    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1cacc1f000)\n    /lib64/ld-linux-x86-64.so.2 (0x00007f1cad170000)\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    • sd-v1.0.0-x86_64-unknown-linux-gnu.tar.gzMusl,如果你用with查看,你ldd会看到“静态链接”,这实际上意味着它根本不需要 libc,也不需要动态链接器。\n
      \xe2\x9d\xaf ldd ./sd\n    statically linked\n
      Run Code Online (Sandbox Code Playgroud)\n
    • \n
    \n
  • \n
\n

因此,对于 41 KB 的差异,您可以避免打包共享库/lib/x86_64-linux-gnu/libc.so.6. 在我的系统上是 1.9 MB

\n
    \n
  • 静态链接的 Musl 发行版总共 1020 KB
  • \n
  • GNU 发行版中的 979 KB + 1922 KB(对于 libc)= 总计 2901 KB
  • \n
\n