如何加载共享库而不加载其依赖项?

2024-02-01

说我有一个图书馆libfoo.so.1,这取决于(根据ldd) on libbar.so.1。然而,libbar.so.1目前不可用。我的应用程序需要调用一个函数libfoo.so.1这不需要libbar.so.1 at all.

有没有办法加载libfoo.so.1,解析函数符号然后调用它而无需libbar.so.1来满足依赖性?这是“我知道我在做什么,就让我这么做吧”的情况。我尝试了 RTLD_LAZY 标志,但它仍然尝试加载libbar.so.1之前的图书馆not加载符号。


EDIT

具体情况如下。

我们有3名球员:

  • libbar.so.1,位于不在路径中的共享库LD_LIBRARY_PATH or ldconfig,并且其依赖关系都已解决
  • libfoo.so.1,位于与以下目录不同的目录中的共享库libbar,但这取决于libbar。在运行时,libfoo就会知道在哪里libbar.
  • App,需要加载的二进制应用程序libfoo在运行时的某个时刻。

App不知道去哪里找libbar,但知道libfoo知道。我想要完成的是有一个 init 函数libfoo这只会改变App的当前工作目录到哪里libbar旨在最终解决所有依赖关系并使每个人都满意。

libfoo will 最终需要调用东西libbar,只是不在这个 init 函数中。我不认为创建存根会起作用,因为符号最终需要解析为real功能。


好吧,即使使用变量仍然可以解决RTLD_LAZY,所以一般来说您确实需要链接所有库。看来你应该创建一个存根libbar.so.1它没有任何功能,可以被链接器找到。

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

如何加载共享库而不加载其依赖项? 的相关文章

  • 将 ARGB 拆分为字节值

    我有一个 ARGB 值存储为 int 类型 它是通过调用 ToArgb 来存储的 我现在想要来自 int 值的各个颜色通道的字节值 例如 int mycolor 16744448 byte r g b a GetBytesFromColor
  • 线程独占数据:如何存储和访问?

    NET 中是否有可能将对象实例绑定到线程的当前执行上下文 这样在代码的任何部分我都可以做类似的事情CurrentThread MyObjectData DoOperation 并确保我访问特定于线程的数据 谢谢 你可以看一下线程静态属性 h
  • 为什么使用数组索引循环数组比指针访问慢?

    我正在读Kochan的书 Programming in C 在第 14 页的 指针和数组 部分中 264 他说 一般来说 索引数组的过程比执行索引过程花费更多的时间 访问指针内容的过程 其实这也是主要原因之一 为什么使用指针来访问数组的元素
  • 命名管道客户端无法连接到作为网络服务运行的服务器

    我有一个服务在网络服务帐户下运行 该服务只是设置一个命名管道并侦听连接 NamedPipeServerStream listeningPipe new NamedPipeServerStream ourservicepipe PipeDir
  • 表达式访问者仅为某些 lambda 表达式调用 VisitParameter

    我希望能够使用嵌套扩展方法将 EF 中的实体投影到相应的视图模型 参见我之前的问题使用扩展方法在 EF 中投影单个实体 https stackoverflow com questions 39585427 projection of sin
  • Monitor.Pulse & Wait - 意外行为

    http www codeproject com Articles 28785 Thread synchronization Wait and Pulse demystified http www codeproject com Artic
  • 值类型如何实现引用类型

    我遇到了一个值类型正在实现 ref 的场景 类型 只是想知道这怎么可能 幕后发生了什么 结构体是值类型 接口是引用 类型但结构可以实现接口而不会出现任何错误 有什么想法吗 提前致谢 实际上 它同时以两种不同的方式进行 首先 任何值类型都可以
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • 用 OpenCL C 编写快速线性系统求解器

    我正在编写一个 OpenCL 内核 它将涉及求解线性系统 目前我的内核太慢了 提高线性系统部分的性能似乎是一个不错的起点 我还应该注意 我并没有尝试使我的线性求解器并行 我正在研究的问题在宏观层面上已经是令人尴尬的并行 以下是我编写的 C
  • 将 std::pair const 转换为 std::pair const 安全吗?

    理论上或实践上 安全吗reinterpret cast a std pair
  • _MM_TRANSPOSE4_PS 在 GCC 中导致编译器错误?

    我第一次在 GCC 而不是 MSVC 中编译我的数学库 并经历了所有的小错误 我遇到了一个根本没有意义的错误 Line 284 error lvalue required as left operand of assignment 284号
  • 是否自初始化 'A a = a;'允许吗?

    此代码在运行时在复制构造函数中失败 但编译器 MSVS2008 没有发出警告 您能解释一下 最好引用标准 这段代码是否非法或什么 我理解 A a a 永远不应该写在第一位 但我正在寻找理论背景 class A public A p new
  • 使用左连接获得不适当的输出

    我正在尝试获取变体列表 并且对于每个变体都获取所有subvariants list无论子变体属于何处 特别的Test say 100 这是示例数据 Id TestId SourceSubVariantId TargetSubVariantI
  • 在 Linux 服务器上创建和编辑 MS-Word 文档?

    希望开发处理文档的服务器端应用程序 源文档大多是MS Word 2003 2007 即MS版本的Docx 希望服务器应用程序能够在linux或windows上运行 想知道在linux下读写MS Word文件最好的工具或库是什么 兼容性是最重
  • 如何在 C 语言中获取输入中的空格

    我想从控制台获取字符数组 它还包含空格 我在 C 中知道的唯一方法是 scanf 但是一旦遇到空格 它就会停止接受输入 我该做什么 这就是我正在做的事情 char address 100 scanf s address 尝试使用 fgets
  • 解析连接字符串

    是否有标准库或代码片段可以使用这样的连接字符串获取值 string connstr DataServiceUrl http localhost foo RemoteServerConnection server http localhost
  • 为什么最小的 int -2147483648 的类型为“long”? [复制]

    这个问题在这里已经有答案了 对于一个学校项目 我必须编写 C 函数 printf 的代码 一切进展顺利 但有一个问题我找不到好的答案 所以我来了 printf PRINTF d t d n 2147483648 告诉我 gcc Werror
  • C++ 模板参数数量错误(2,应该是 1)

    我使用 C 并行快速排序程序进行了测试 如下所示 首先使用列表作为容器 然后我转移到通用容器类型 但它报告了标题错误 可以帮忙解决这个问题吗 include
  • 从数据库配置中的连接字符串中删除 SSIS 密码

    我有一个 SSIS 包 它使用 SQL 服务器中的 SSIS 配置表来检索 OLE DB 连接管理器的连接字符串属性 问题是我还需要相同的连接字符串来调用使用实体框架的程序集 我尝试访问连接管理器连接字符串属性 但 SSIS 总是删除密码
  • 如何从 C# 中的 Web Api 方法正确获取字节数组?

    我有以下控制器方法 HttpPost Route SomeRoute public byte MyMethod FromBody string ID byte mybytearray db getmybytearray ID working

随机推荐

  • 在 JSON.NET 中反序列化具有不同名称的对象列表

    我从一个网站获取数据 该网站返回我非常陌生的 json 格式 我已经寻找解决方案几个小时了 我必须使用这些术语 json 的格式如下 Foo name Foo size human 832 73kB bytes 852718 date hu
  • 如何为气流设置多个调度程序

    我们最近转向了气流 2 0 我想了解设置多个调度程序的过程 我尝试查看各种来源 包括使用天文学家 cli 的程序 但我们没有使用它 对于包括气流文档在内的其他来源 虽然他们提到可以这样做并给出了有关数据库要求的一些详细信息 但他们没有提供有
  • 以最佳方式返回负数的计数

    在按行和列排序的矩阵中搜索 的变体 给定一个按行和列排序的二维矩阵 您必须以最佳方式返回负数的计数 我可以想到这个解决方案 初始化行索引 0 如果行索引 gt 0 行索引 否则应用二分搜索 并用此代码实现 5X5 矩阵 include
  • 打印按值排序的字典

    我基本上是尝试迭代字典并从最大值到最小值打印出键 值 我一直在搜索这个网站 很多人都在使用 lambda 但我不太确定它是如何工作的 所以我现在试图避免它 dictIterator iter sorted bigramDict iterit
  • 如何在悬停时更改 navbarPage 链接的文本颜色(在闪亮的应用程序中)?

    这是我的闪亮应用程序的编辑版本 ui lt tagList fluidPage titlePanel tags head tags style HTML navbar default color red important navbarPa
  • PHP 对象生命周期

    我正在使用 PHP 5 2 如果我在一页上new一个对象 这个对象什么时候会被销毁 当用户转到另一个 php 页面时 对象是否会自动销毁 或者我需要显式调用 destructor 它将在页面加载结束时被破坏 从内存中卸载 或者如果您之前取消
  • SimpleXML 与 DOMDocument 性能对比

    我正在使用 SimpleXML 类构建 RSS 解析器 我想知道使用 DOMDocument 类是否会提高解析器的速度 我正在解析一个至少有 1000 行的 rss 文档 并且我使用了这 1000 行中的几乎所有数据 我正在寻找需要最少时间
  • 如何在 WPF 应用程序中为页面创建模式对话框?

    我有一个 WPF 窗口 其中有一个托管框架的控件 在该框架中我显示不同的页面 有没有办法使对话框仅在页面上模式化 当我显示对话框时 不应单击页面上的任何控件 但应该可以单击不在页面上的同一窗口上的控件 如果我对你的信息的解释是正确的 那么你
  • 正则表达式和 unicode

    我有一个脚本可以解析电视剧集的文件名 例如 show name s01e02 avi 获取剧集名称 来自 www thetvdb com API 并自动将它们重命名为更好的名称 节目名称 01x02 avi 该脚本工作正常 直到您尝试在具有
  • 检查 URL 是否有 http:// 前缀

    在我的应用程序中 当用户添加对象时 还可以添加该对象的链接 然后可以在 webView 中打开该链接 我尝试保存不带 http 前缀的链接 然后在 webView 中打开它 但无法打开它 在webView开始加载之前 有没有办法检查保存的U
  • 在 Dart 中发送 SMTP 电子邮件

    我查看了 API 文档和语言指南 但没有看到任何有关在 Dart 中发送电子邮件的内容 我也检查了这个谷歌群组帖子 https groups google com a dartlang org forum topic misc 5YNvrm
  • 如何通过 JSON 文件为curl 传递有效负载?

    我可以通过以下方式成功创建一个地方curl执行以下命令 curl vX POST https server api v1 places json d auth token B8dsbz4HExMskqUa6Qhn place name Fu
  • 为复杂的跨平台程序创建安装程序

    我正在为一堆相对复杂的桌面应用程序绘制一个应用程序部署过程 我们有本机应用程序和 Java 应用程序 因此部署必须能够检查 JRE 是否存在并在需要时安装它 某些应用程序依赖于特殊硬件 因此部署还必须能够启动必要的驱动程序安装程序 一些应用
  • 使用 AsyncTask 时应用程序挂起并暂停所有线程

    我正在尝试使用AsyncTask类来获取网站的内容 logcat 告诉我W art Suspending all threads took 15 or any other number ms反复 我的应用程序被冻结 直到日志消息打印完成 日
  • 在 Powershell 中设置 InheritanceFlags 与 PropagationFlags

    我正在尝试找到 InheritanceFlags 和 PropagationFlags 的正确组合 以便我的新文件夹不会继承之前文件夹的权限 而是将权限传播到新文件夹中包含的文件夹 文件 我尝试交换我下面有两个 但这只给了新文件夹与上面的文
  • 将三个不同的列合并为 R 中的日期

    现在 我在 R 的数据文件中有 3 个单独的列 分别为年 月和日 如何将这三列合并为一列并使 R 理解它是日期 这是现在的样子 year mon day gnp 1947 1 1 238 1 1947 4 1 241 5 1947 7 1
  • Elasticsearch 在显示 t: failed to read local state , exiting 后崩溃

    我是 Elasticsearch 的新手 我在本地只运行一个节点 到目前为止 它运行良好 现在一启动就崩溃了 错误堆栈如下 C MyApps elasticsearch6 5 1 elasticsearch oss 6 5 1 elasti
  • 在 bash 中从占据终端整个宽度的破折号字符绘制一条水平线

    我需要一个命令来在终端中绘制一条水平 线 该线必须恰好等于终端长的宽度 无论当前终端宽度如何 并且由破折号字符组成 尽管也可以使用水平线的 unicode 符号 如果能上色就更好了 我需要像这样使用它 echo some text draw
  • WCF:OperationContext.IncomingMessageProperties.Via 返回错误的 URI

    我在 IIS 中托管 WCF 服务 我在 IIS 中为该站点设置了多个主机名绑定 但是 当向任何非默认绑定发出请求时 OperationContext IncomingMessageProperties Via 属性不会报告正确的 url
  • 如何加载共享库而不加载其依赖项?

    说我有一个图书馆libfoo so 1 这取决于 根据ldd on libbar so 1 然而 libbar so 1目前不可用 我的应用程序需要调用一个函数libfoo so 1这不需要libbar so 1 at all 有没有办法加