- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用 musl libc 编译的共享库
$ readelf -d ./libinterop_d.so
Dynamic section at offset 0x8ecb0 contains 22 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so]
0x000000000000000f (RPATH) Library rpath: [/usr/local/musl/lib]
0x000000000000000c (INIT) 0x46350
0x000000000000000d (FINI) 0x7664a
0x0000000000000019 (INIT_ARRAY) 0x28e700
0x000000000000001b (INIT_ARRAYSZ) 64 (bytes)
0x000000000000001a (FINI_ARRAY) 0x28e740
0x000000000000001c (FINI_ARRAYSZ) 16 (bytes)
0x0000000000000004 (HASH) 0x158
0x0000000000000005 (STRTAB) 0xc940
0x0000000000000006 (SYMTAB) 0x2bc0
0x000000000000000a (STRSZ) 203286 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000003 (PLTGOT) 0x28f000
0x0000000000000002 (PLTRELSZ) 28056 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x3f5b8
0x0000000000000007 (RELA) 0x3e358
0x0000000000000008 (RELASZ) 4704 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffff9 (RELACOUNT) 46
0x0000000000000000 (NULL) 0x0
它链接到 musl 的 libc.so
$ ldd ./libinterop_d.so
linux-vdso.so.1 => (0x00007fff566c9000)
libc.so => /usr/local/musl/lib/libc.so (0x00007f111398c000)
现在我无法将此共享对象加载到 Java 应用程序中。但是,如果我将链接恢复回 GNU 的 libc.so
,它就可以工作了。
是否可以在同一个进程中同时拥有 GNU 和 musl libc.so?java 应用程序依赖于 GNU 的 libc.so
,但我希望我的共享对象使用 musl 的 libc.so
。
也许有办法将 musl 的 libc.so
重命名为 musl-libc.so
?
最佳答案
Is it possible to have both GNU and musl libc.so in the same process?
可以同时加载它们,是的。但结果会立即崩溃,所以这是一个无用的事情。
but I want my shared object use musl's libc.so
但为什么呢?
无论如何,你永远不会让 musl 和 glibc 合作,你的选择是要么对一切都使用 glibc,要么对一切都使用 musl。
Maybe there is a way to rename musl's libc.so to musl-libc.so
它们已经以不同的方式命名:libc.so
与 libc.so.6
。图书馆的命名并不重要。重要的是它们都提供相同(冲突)符号。
关于glibc - 在同一个进程中加载 musl libc.so 和 gcc libc.so?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30151808/
我正在尝试编译各种程序,例如使用 musl 的 MariaDB工具链。也就是说,我不想在编译完成后对 glibc 或 GNU 的链接器有任何依赖。 到目前为止,我一直在使用 musl 的 GCC 包装
Grpc版本:1.24.2 在部署我的 Node.js 应用程序时,我遇到了 grpc package 的二进制文件问题. 错误: Error: Failed to load gRPC binary
musl 团队声称不需要检测 musl libc 的方法,因为它们只实现标准功能并且没有需要检测的怪癖。 直到今天,这种说法很可能是正确的,但它不再是正确的。正常功能检测不起作用,因为该功能存在但已损
我们有基于 alpine linux 的 docker 文件。我想让构建的容器检查 musl 库的版本,我的意思是运行容器并在 RT 中检查 musl 版本我该怎么做? 我试过类似的东西 docker
我想要实现的是使用 musl 编译一个 GNU 独立且隔离的 LLVM 工具链作为clib。 最近LLVM 4.0已发布,具有许多新的炫酷功能,包括生产就绪 LLD ,因此链接步骤也可以由 LLVM
我必须用 musl-gcc 包装器编译一些 c++ 程序,所以我需要 c++ 头文件和库。在我使用它们之前,我想我必须使用 musl-gcc 本身针对 musl 编译 libstdc++ 源代码。 我
我有一个 C99 共享库,我想将其链接到一些静态静态库中(通过 --whole-archive)。 注意:所有静态库都是用-fPIC构建的 我也想构建一个通用的 linux 二进制文件,因此决定使用
所以我正在玩 Alpine Linux,它使用 musl 与 glibc。 我发现由于这个选择,我无法运行 Oracle Java 或在 glibc 下构建的静态二进制文件。 musl 是否应该与更广
我将按照此处显示的示例为Rust包创建一个Dockerfile:https://alexbrand.dev/post/how-to-package-rust-applications-into-min
我正在尝试使用 GHC 为用 Haskell 编写的基于 CGI 的 Web 应用程序构建静态二进制文件,并将其部署在共享服务器上。 我想使用musl ,如this answer所述. 不幸的是,这不
我正在尝试使用 GHC 为用 Haskell 编写的基于 CGI 的 Web 应用程序构建静态二进制文件,并将其部署在共享服务器上。 我想使用musl ,如this answer所述. 不幸的是,这不
我正在尝试让 Rust 在 Docker 中运行以将其用于 32 位 musl 构建。自从我更新它以使用新的 URL 来拉取 rustup 后,我在使用 bash 交互式运行容器时遇到了这个问题: r
我正在尝试在 Alpine 上运行我的 rust 应用程序,但我在使用 musl 作为目标或使用 glibc 的兼容层时遇到了问题。当我尝试从 libc6-compat 使用时,我遇到了这个问题: E
我需要针对 musl-libc 编译一个 C 程序,以使其在嵌入式设备上运行。但是,我无法编译该程序。源取决于我传递给链接器的几个库: /usr/local/musl/bin/musl-gcc app
我在为目标 x86_64-unknown-linux-musl 编译时遇到错误。 这是我的做法: cargo new foo cd foo rustup target add x86_64-unkno
我正在尝试调试在具有 MIPS cpu 的板上远程运行的程序,使用 musl 作为其 libc。 如果我在板上启动 gdbserver,通过 set sysroot /path/to/sysroot
我正在尝试构建 musl-libc在运行 OS X 10.11.5 的计算机上。不幸的是,我在运行 make 时收到以下错误: clang: warning: optimization flag '-
我有一个用 musl libc 编译的共享库 $ readelf -d ./libinterop_d.so Dynamic section at offset 0x8ecb0 contains 22
我正在使用 Nix 作为 Rust 程序的依赖管理器。我有以下 default.nix(简化但有效): rec { pkgs = import {}; hello = pkgs.stdenv
在 musl 库 malloc() 实现中,MMAP_THRESHOLD 值为 229376 字节,因此 bin_index(用于查找存储在“mal.bins”中的空闲 block 以供以后请求使用的
我是一名优秀的程序员,十分优秀!