在同一个进程中加载​​ musl libc.so 和 gcc libc.so ?

2023-12-28

我有一个用 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应用程序依赖于GNUlibc.so,但我希望我的共享对象使用 musl 的libc.so.

也许有一种方法可以重命名 musl'slibc.so to musl-libc.so?


是否可以在同一个进程中同时拥有 GNU 和 musl libc.so?

可以同时加载它们,是的。但结果很快就会崩溃,所以这样做是没有用的。

但我希望我的共享对象使用 musl 的 libc.so

But why?

无论如何,你永远不会让 musl 和 glibc 合作,你的选择是要么使用 glibc 完成所有事情,要么使用 musl 完成所有事情。

也许有办法将 musl 的 libc.so 重命名为 musl-libc.so

他们是already命名不同:libc.so vs. libc.so.6。库的命名并不重要。事实上,它们都提供相同的(矛盾的) 符号才是重要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在同一个进程中加载​​ musl libc.so 和 gcc libc.so ? 的相关文章

随机推荐

  • 从 FireWire 获取视频流

    我正在尝试通过 FireWire 将摄像机 Sony HVR Z1E 中的视频流式传输到我的计算机 传入的图片 流应由一些期望 CVMat 格式 来自 openCV 的函数进一步处理 好吧 我现在的问题是我不知道如何获取流 好吧 openC
  • Istio 分布式跟踪与 Jaeger 不起作用

    我正在尝试设置本地 k8s 集群minikube已安装istio我在使用 Jaeger 启用分布式跟踪时遇到问题 我有3个微服务A gt B gt C 我正在传播所需的所有标头 x request id x b3 traceid x b3
  • escapeshellarg 和 escapeshellcmd 有什么区别?

    PHP 有 2 个密切相关的函数 escapeshellarg http php net escapeshellarg and escapeshellcmd http php net escapeshellcmd 它们似乎都做类似的事情 即
  • super() 并更改协作方法的签名

    在多重继承设置中 例如所列出的 我该如何使用super 并处理层次结构中的类之间函数签名发生变化的情况 即我可以重写这个例子 在 python3 中 来使用super 例子取自文章super 被视为有害文章 https fuhm net s
  • 为什么在这个 Perl 示例中,defineed sdf 返回 true?

    我在 Perl 中尝试了这个例子 有人可以解释为什么这是真的吗 if defined sdf print true 它打印true sdf 可以是任何名称 另外 如果定义了 sdf 函数并且返回 0 则不会打印任何内容 print sdf
  • C++ 中的赋值运算符返回右值还是左值?

    C 中的赋值运算符返回右值还是左值 如果它是左值 那么两个参数中的哪一个将在这里递增 a b 它返回一个lvalue 根据第 5 17 条 赋值运算符 和复合赋值运算符 从右到左分组 全部都需要一个可修改的左值作为他们的左边 操作数并返回引
  • SQLServer连接预登录

    在 SQL Server 2000 中使用 Hibernate 时出现以下错误 Dec 12 2015 12 54 20 AM com microsoft sqlserver jdbc SQLServerConnection Prelogi
  • sys.dm_exec_sql_text 如何工作?

    你能解释一下原因吗 select from sys dm exec sql text sql handle 抛出错误 无效的列名 sql handle 但是 select from sys sysprocesses cross apply
  • 如何定义具有多个 OR 运算符的正则表达式,其中每个术语都包含空格前缀和后缀?

    我正在准备数据提取任务 我需要删除一组术语 每个源记录字符串中可以没有 部分或全部出现 有超过 100 000 条目标记录 我想避免执行单个术语匹配 替换操作 因为 a 要删除的术语列表可能会增长 并且 b 一次执行一个术语的当前匹配 替换
  • 如何在 R 中获得特定的彩色比例?

    我想使用看起来有点常见的色标 看看here https stackoverflow com questions 8421536 a true heat map in r and here http tctechcrunch2011 file
  • 按月计算 cumsum() 但如果该月没有数据则重复这些值

    我有数据 df date col1 col2 0 1 16 2016 apple 20 1 2 1 2016 apple 40 2 2 2 2016 pear 60 3 3 13 2016 apple 10 4 5 4 2016 apple
  • Java中如何从超类调用子类方法?

    我环顾四周 想找到问题的答案 但找不到 Java中如何从超类调用子类方法 基本上我想做的是这样的 我有一个名为exec这需要一个String作为命令的参数 我希望能够致电exec开发人员在事先不知道子类名称的情况下从超类重写的子类中的方法
  • 如何在android中捕获设备后退按钮事件?

    我通过我的应用程序打开了 pdf 文件 当单击设备后退按钮时 它会自动返回到我的应用程序 它工作正常 这里我想捕获设备中的后退按钮事件 我覆盖后退按钮 但它不起作用 请帮我 这是您所要求的示例 Override public boolean
  • Github Pages Jekyll 站点中的资产收到 404 错误

    我正在尝试在 github 页面上建立一个基本的 Jekyll 站点 目前有问题的网站是 https kculmback github io kcfeatures v2 https kculmback github io kcfeature
  • C printf 使用 %d 和 %f

    我正在研究这个程序 我注意到使用 f 表示双精度型 使用 d 表示浮点型给了我完全不同的东西 有人知道为什么会发生这种情况吗 int main float a 1F double b 1 printf float d ndouble f a
  • 打字稿中函数上的“:”和“=>”有什么区别?

    假设我们使用这样的显式类型来定义一个函数 var func arg1 string arg2 number gt boolean 正如你所看到的 我们应该在这里使用 gt 但是我们不能在函数减速中使用这个粗箭头 func function
  • pypy 内存使用量永远增长?

    我有一个复杂的 python 服务器应用程序 它一直持续运行 下面是它的一个非常简化的版本 当我使用 python 运行以下应用程序时 python Main py 它立即使用 8mb 的内存 并保持在 8mb 的内存 这是应该的 当我使用
  • R:使用 documentclass:report 从 bookdown::pdf_book 的标题中删除“章节”部分

    考虑我的标题和第一部分 title asdf author asdf date 13 Januar 2018 documentclass report output bookdown pdf book citation package bi
  • 预提交 Mercurial hook 以停止提交到错误的分支

    我在 Mercurial 存储库中有一个软件 我将我的软件项目打包为 Debian 包 看来做到这一点的标准方法是有一个 Debian 软件包文件的单独分支 哪些生活在debian子目录 我一直遇到的一个问题是我忘记了我是哪个分支 并意外地
  • 在同一个进程中加载​​ musl libc.so 和 gcc libc.so ?

    我有一个用 musl libc 编译的共享库 readelf d libinterop d so Dynamic section at offset 0x8ecb0 contains 22 entries Tag Type Name Val