问题标签 [rpath]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linker - Gradle Native Binary 链接器错误:错误的 rpath 选项
我有一个 C++ 库,由 Gradle 在 Mac for Windows 上使用 mingw-w64 进行交叉编译。当链接器尝试链接二进制文件时,我得到一个“错误的 -rpath 选项”。
下面的调试输出中有一个复杂的链接器搜索路径,为了清楚起见,我已将其删除,但它们都可以。但是,有一个部分似乎是错误的 - 似乎某些内容被错误地添加到了搜索路径中。
这似乎是导致问题的有问题的位:@/var/folders/75/fsklv28523d2gx1wth3rc7y0000101/T//ccOUlRAe
那是什么,为什么会在那里?
java - 是否可以将类路径设置为 JNI 库中的 @rpath?
我有一个 JNI 依赖的库,我希望它相对于类路径加载,这可能吗?
linux - 在 QMake 中设置 RPATH 顺序
我有一个 Linux Qt 程序。我希望它优先使用可执行文件目录中的(动态)Qt 库(如果存在),否则使用系统的 Qt 库。RPATH 来救援。
我将此行添加到qmake的 .pro 文件中:
并用readelf查看生成的可执行文件,我看到:
似乎正确,但ldd显示它正在使用系统版本:
如果我手动编辑 qmake 生成的 Makefile 以交换两个 rpath 的顺序,因此 $ORIGIN 出现在 /usr/local/... 之后,我会得到正确的行为:
我的问题是qmake如何构造最终的 LFLAGS 变量。我不知道如何让它把我的添加($ORIGIN)放在系统库之后。有任何想法吗?
python - 如何解决 dyld:Myo 的 python 包装器中的库未加载错误
所以我在摆弄一个妙臂章。我发现它有一些 Python 包装器/绑定(https://github.com/smartin015/MYO-python)。但是,当我尝试运行示例时出现错误。
我已经到这里阅读了@rpath 是什么:https ://mikeash.com/pyblog/friday-qa-2009-11-06-linking-and-install-names.html
我一直在 StackOverflow 上查找其他类似的问题。但到目前为止,我不确定从哪里开始解决这个问题。
那么,“原因:找不到图像”是什么意思?我应该如何解决这个错误?
我正在运行 OSX 10.10.1,并且只使用附带 2.7.6 的标准库存 python,并且它的 /usr/bin/python 用完了
谢谢!
c++ - 同一系统上的两组 libstd++.so 和 libc.so
我有一个 ARM 设备,上面运行着不可升级的 linux 内核。我想在上面运行一些 C++11 程序,但是,系统libstdc++.so.6
太libc.so.6
旧,无法在运行时支持 C++11。我有较新库的副本,但我不确定如何告诉我的程序使用新库而不是旧库。我创建了一个名为 的新目录/tmp/newlibs
,并将新共享对象的副本放在那里。然后,我使用以下标志编译:
g++ -std=c++11 -Wl,-rpath,/tmp/newlibs test.cpp -o test
但是当我尝试执行该文件时,出现以下错误:
很明显,该rpath
标志适用于libstdc++
,但看起来它不适用于较新版本的libc.so.6
. 我在这里缺少什么吗?其中是否libstdc++.so.6
有我无法更改的硬编码路径?
我觉得这是一个与这个问题非常相似的问题,除了在我的情况下它没有完全利用我的新 glibc 目录:
编辑:似乎动态链接器可能出于某种原因跳过了我的新 libc。因为当我尝试使用预加载时libc.so.6
,LD_PRELOAD
我得到:
ERROR: ld.so: object '/tmp/newlibs/libc.so.6' from LD_PRELOAD cannot be preloaded: ignored.
ios - 自定义框架未加载 dyld:库未加载:@rpath/Custom.framework/
我有一个包含多个自定义动态框架的应用程序,这意味着我在 Xcode 6.2 上使用 iOS 8 作为 SDK。我的 Mac 在优胜美地。这些框架有 Swift 源代码和资源。
该应用程序是分布式企业,因此我只需创建一个 IPA 并通过用户可以下载和安装应用程序的网页在内部分发。
该应用程序可以在 iPhone 5(iOS 8.1.2)、iPod Touch(iOS 8.2) 和模拟器上安装和运行,但不能在 iPhone 6(iOS 8.1.2) 上安装和运行。错误始终是 dyld:未加载库:@rpath/Custom.framework/。每当我删除并添加框架以尝试修复它时,另一个框架会弹出,因为 iPhone 6 上没有加载。(为什么!!!)
设置了以下内容:
- @executable_path/框架
- 嵌入式内容包含 Swift 代码 - 是
- 嵌入式二进制文件中的框架
- 嵌入式框架
- 将二进制文件与库链接
是什么导致了这些问题,我可以做些什么来确保应用程序在所有设备和 iOS 8 版本上始终如一地运行。
我发现的大多数解决方案都是试错建议。
c - elf rpath 不工作(无法打开共享对象文件:没有这样的文件或目录)
我试图让我的可执行文件从它自己的目录加载一些共享库,所以我决定添加.
到 rpath。但是当我尝试运行它时,它找不到.so。这是 readelf -d myexec 结果中感兴趣的部分:
我的文件夹包含:
错误 :
注意:我无权访问 LD_LIBRARY_PATH 环境变量(实际上它甚至不存在),其他库位于 /lib 文件夹中并且加载良好(但我不能放 libtoload.so.1)那里。我实际上是从另一台计算机交叉编译可执行文件,并且只能访问目标系统上的一些命令(没有工具链,主要是busybox命令)。
编辑: /lib/ld-linux.so.3 --library-path ./ ./myexec 有效
linker - rpath 值可以是符号链接吗?
在makefile中,我像这样将rpath传递给链接器
一切正常,但当我这样做时
其中 ~/symlink -> /absolute_path_to_folder_with_lib 没有加载库 rpath 的值可以是符号链接吗?
c++ - 在 MacOS 上使用指向同一目录的库搜索路径编译动态库(CMake)
我正在尝试使用 CMake 在 MacOS 上编译 dylib。我的库动态链接到其他一些库,我想将它们与我的库一起提供。为此,我需要确保在加载库时,从同一文件夹加载依赖库,无论其位置。我相信它与rpath有关,但我不是这里的专家。您能否建议一种使用 CMake 实现此目的的方法?(我想需要通过 -Wl,-rpath 或类似的方式提供一些链接器选项
提前致谢!
linux - 使用 RPATH 构建 OpenSSL?
我有 Ubuntu 14.04。它带有 openssl 1.0.1f。我想安装另一个 openssl 版本(1.0.2),我想自己编译。
我配置如下:
安装后,当我检查二进制文件时ldd openssl
,结果是:
看起来不错。但是当我检查 ldd 时libssl.so
,结果是:
它仍然使用系统版本的 libcrypto。我尝试了不同的构建方式,但结果始终保持不变。
我的问题是如何以某种方式配置构建,它可以硬编码共享库的所有二进制和库依赖项,而无需使用LD_LIBRARY_PATH
,或类似的东西。