shared-libraries - LD_PRELOAD 多个相互依赖的库
问题描述
我有一个带有依赖树的库,即一些依赖项有我想要预加载的其他依赖项。我怎样才能做到这一点?
LD_PRELOAD \
/opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libicudata.so.60 \
/opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libicuuc.so.60 \
/opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libicui18n.so.60 \
/opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libQt5Core.so.5 \
MyApp
调用 contains 已排序,因此LD_PRELOAD
依赖项列在依赖库之前。
链接器抛出以下错误:
ERROR: ld.so: object '/opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libQt5Core.so.5' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
可以预加载库以按正确的顺序完成依赖项吗?
解决方案
这个错误:
ld.so: object '/opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libQt5Core.so.5' \
from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
表示动态加载器尝试打开库失败。
此失败有几个可能的原因:
- 该文件不存在(用于
ls -L /opt/yocto/2.5.1/sysroots/core2-64-poky-linux/usr/lib/libQt5Core.so.5
确认它存在 - 该文件适用于错误的体系结构(例如 32 位 ELF 时
MyApp
为 64 位,反之亦然)。使用file MyApp
和file libQt5Core.so.5
确认它们匹配。 - 别的东西。也许
MyApp
与newlib
or相关联uClibc
,但libQt5Core.so.5
使用 GLIBC 构建(反之亦然)。
推荐阅读
- flutter - Flutter 应用程序在构建 release-APK 时工作,但在通过 Google Play 商店提供时不工作
- java - 如何使用 Spring Boot 从 SQL Server 获取当前数据库时间
- freemarker - Apache freemarker 模板分配和比较值
- reactjs - 为什么状态变量数组内容不能在div中显示?
- c - 如何从 C 程序中的斐波那契数列中提取素数?
- javascript - 我添加了 JS 功能以防止用户在 datepicker 中插入无效日期。它正在工作,但错误警报框未关闭
- react-native - Firestore 不断加载旧的更改
- typeorm - 在 Typeorm With Repository 方法的 Where 子句中使用 OR 进行联接查询
- javascript - 如何使用 Javascript/PHP 从 Web 应用程序打开移动应用程序(Android 或 iOS)
- javascript - 通过使用外部框架,有没有办法在不知道道具本身的情况下让控制台中的事件始终等于 true?