问题标签 [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.

0 投票
3 回答
3718 浏览

erlang - 从源代码构建 Erlang OTP 的 OpenSSL 错误

尝试构建一个完全独立的 OTP,它可以独立于系统上安装的库移动。

从源代码构建 OpenSSL 1.0.0d,如下所示:

然后是 OTP R14B03:

然后,Erlang 的 Make 失败如下:

我们说的是 Ubuntu 10.04。非常感谢任何帮助 - 谢谢!

0 投票
1 回答
1607 浏览

linux - LD_PRELOAD 更改 LD_LIBRARY_PATH

我有一个特殊的问题。我有一个使用 gcc-4.2 构建的共享库“my_tracker.so”。这个共享库现在依赖于 libgcc_s.so.1 (GCC 4.2)。我做了'ldd my_tracker.so',它从/lib64中获取了libgcc_s.so.1。

我正在运行

在我的脚本里面。我想确保 vncserver[vnc_install]/lib/vnclibs/LD_LIBRARY_PATH.

但是,在执行我的脚本后,看起来 vncserver 正在从/lib64.

我的预加载共享库“my_tracker.so”的加载是否会在LD_LIBRARY_PATH找到 libgcc_s.so.1 (GCC 4.2) 的位置之前添加?

如果是这样,我该如何解决这个问题?

问候约翰

0 投票
1 回答
36188 浏览

makefile - 如何在生成文件中指定 RPATH?

我正在尝试在我的二进制文件中指定 rpath。我的makefile看起来像这样-

但是,当我使用命令查询 rpath 时,我readelf -a ./main | grep rpath什么也没得到,我尝试将 rpath 指定为,LDFLAGS= "-rpath=../libs/"但即使这样似乎也不起作用。

有人可以发布一个关于我应该如何在生成文件中指定 rpath 的示例吗?

GCC 和 ld 版本是-

0 投票
1 回答
794 浏览

xcode3.2 - @rpath 是否适用于查找从另一个 .dylib 加载/调用的 .dylib?

我刚刚发现了使用 dlopen 加载 .dylib 文件的 @rpath,并且需要一些帮助来理解它们。我在 OSX 机器上使用 Xcode 3.2.5。

我有几个 .dylib 调用其他 .dylib,它们也互相调用。@rpath 似乎适用于加载的初始 .dylib,但是一旦我使用另一个 .dylib 进行 dlopen 调用,该 .dylib 使用先前使用 @rpath 找到并加载的第一个 .dyblib 文件,dlopen 将失败,说它可以'找不到原始的.dylib。

@rpath 是否仅适用于与 dlopen 一起使用的文件,还是也用于解决正在打开的 dylib 文件内部的依赖关系?

更新:

我的进一步发现导致我使用 install_name_tools 来更改相互依赖关系以拥有它们的@rpath。这是这样做的正确方法吗?

0 投票
1 回答
3197 浏览

macos - Mac os x上的Cmake,使用完整路径链接库

我正在尝试用 cmake 构建一个 python 扩展。这是 cmake 列表:

该库已正确编译和链接,但是当我使用 otool 查看喜欢的库时,我得到:

如何让 CMake 将 drtile.so 与 vigranumpycore.so 和 libboost_python.dylib 的完整路径链接起来?谢谢!

0 投票
5 回答
32458 浏览

gcc - 如何阻止 MinGW 和 MSYS 修改命令行中给出的路径名

在 Windows 上,我正在使用 CodeSourcery 的交叉编译器套件为 ARM/Linux 交叉编译一个程序。我使用 MinGW MSYS 作为我的命令解释器,它经常会破坏我的路径和路径名。例如,为了构建我的程序,我调用

当然,我想/usr/lib/myrpath将逐字插入myprogram可执行文件中——我正在编译的 ARM Linux 目标不使用 MinGW 或 MSYS。但这就是最终的结果:

不完全是我想要的。如果我直接在 cmd.exe 命令行上调用 GCC,我会在可执行文件中获得正确的 rpath。如果我在 MSYS 命令行上调用 GCC,我会得到损坏的 rpath。如果我使用从 cmd.exe 命令行使用 make 运行的 Makefile 调用 GCC,我仍然会得到一个损坏的 rpath (!)

有什么想法可以关闭这种烦人的行为吗?

0 投票
1 回答
482 浏览

c - linux链接器/加载器搜索顺序

这个问题与编译和动态链接期间查找库的方式有关。

考虑这个小项目:

  • 项目
    • 利巴
      • 一个.hpp
      • a.cpp
      • b.hpp
      • b.cpp
    • 主文件

a.hpp:

一个.cpp:

b.hpp:

b.cpp:

主.cpp:

libb 编译为:

光盘库;g++ -shared -o libb.so b.cpp

liba 编译为:

光盘库;g++ -I../libb/ -L../libb/ -lb -shared -o liba.so -Wl,-rpath /full/path/to/project/libb/ a.cpp

和 main 编译:

g++ -Lliba -la -Wl,-rpath /full/path/to/project/liba/main.cpp

编译完成没有错误,但是执行a.out时,找不到libb.so。

ldd 输出:

请注意, libb.so 出现两次。有一次,动态链接器找不到库,有一次是。我假设,在第二种情况下,它使用嵌入在 liba.so 中的 rpath。

当然,有多种方法可以解决这个问题(例如 LD_LIBRARY_PATH,在编译 main.cpp 时嵌入正确的 rpath ...),但我更感兴趣的是为什么 main.cpp 的编译有效,而动态链接却没有不。

到目前为止,我假设使用相同的过程来搜索所需的库。是我遗漏了什么,还是一些我不知道的隐藏魔法?:)

(在带有 gcc 4.3.4 的 SLED11 盒子上进行了测试。)

0 投票
2 回答
714 浏览

macos - 在 Mac OS X 10.7.2 上构建 libjingle 时出现链接错误

我想在 Mac OS X 10.7.2 上构建 libjingle。我刚刚克服了编译器错误并现在遇到了链接器错误。路径/Developer/libjingle/libjingle-0.6.3/talk/build/dbg/lib存在,但系统显示未知。我怎样才能修复它并使 libjingle 真正起作用?

0 投票
2 回答
10196 浏览

cmake - 带包装的 CMAKE RPATH

我正在使用 cmake 创建包

我有以下结构

其中 lib1 和 lib2 是外部动态库。如何设置 RPATH 使其自动与 lib1 和 lib2 链接?

0 投票
5 回答
4913 浏览

makefile - 如何使用相对 rpath 编译 OpenSSL

我一直在尝试使用以下 rpath 编译 openssl 1.0.0g:

每次 I readelf -d apps/openssl,根据我尝试的转义变化,我得到如下结果:

我想在不使用 chrpath 等外部工具的情况下设置我的 rpath。有可能吗?我基本上会接受任何不涉及使用外部工具(如 chrpath)的东西(尽管我已经完成了)。

理想情况下,我想通过在命令行上传递选项(任何形式的-Wl,-rpath,$ORIGIN/../lib64)来做到这一点。

我不介意编辑生成的 Makefile,这是我最后尝试的。如果我能得到它打印一个愚蠢的美元符号!我尝试在 BUILDENV= 块下修改 LIBRPATH ,但没有成功。迄今为止我最好的成绩:

我已经阅读了各种与 rpath 相关的问题,并尝试了各种转义和引用技巧,但到目前为止没有任何效果!