rpath相关内容
我有一个运行 CentOS 的 shell. 对于我正在做的一个项目,我需要 python 2.5+,但 centOS 非常依赖 2.4. 根据我的阅读,如果升级到 2.5,很多事情都会中断. 我想将 2.5 与 2.4 分开安装,但我不知道该怎么做.到目前为止,我已经下载了源 tarball,解压缩它,并做了一个 ./configure --prefix=/opt 这是我希望它
..
我正在尝试将包含特殊字符串 $ORIGIN 的 RPATH 链接到使用 GCC 和 Code::Blocks IDE 构建的可执行文件中.我已经指定了 -Wl,-R$ORIGIN 在项目的链接器选项中,但到 GCC 的命令行输出是错误的(为了清楚起见,已删除): g++ -Wl,-R 为 Code::Blocks 指定此参数的正确方法是什么? 解决方案 决定制作令牌 $ORIGIN
..
注意:下面是完整的工作示例.原始问题如下: 我在使用带有 $ORIGIN 的 ld 的 -rpath 参数时遇到问题. 由于找不到完整的示例,我想我会尝试自己写一个,以便我和其他人以后可以使用它.一旦我得到它的工作,我会整理它. 我之前问过这个问题,但是我觉得我的帖子有点混乱. 示例项目构建了一个共享库和一个链接到该库的可执行文件. 它非常小(3 个文件,22 行,包括构建脚
..
我有一个二进制“CeeloPartyServer";需要在运行时在 FreeBSD 机器上找到 libFoundation.so.它们都在同一个目录中.我使用链接器标志 -rpath=$ORIGIN 编译(在另一个平台上,使用交叉编译器)CeeloPartyServer. >readelf -d CeeloPartyServer |grep -i rpath0x0000000f (RPATH)
..
在构建二进制文件或库时,指定rpath,即 -Wl,rpath, 告诉链接器在二进制文件运行时在哪里找到所需的库. 关于绝对路径和相对路径的 UNIX 哲学是什么?使用绝对路径是否更好,以便可以从任何地方找到 lib?还是将其设为相对更好,这样复制整个目录或重命名更高级别的路径不会导致二进制文件无法使用? 更新 使用 $ORIGIN 通常是构建二进制
..
我刚刚做了一个基本示例,将 ld 的 -rpath 选项与 $ORIGIN here(有关工作版本,请参阅第二个响应).我正在尝试创建一个示例,其中 main.run 链接到 foo.so,而 foo.so 又链接到 bar.so,全部使用rpath 和 $ORIGIN. 运行时文件结构为: 项目/ 库/ 目录/ 子/ bar.so foo.so 运行/ ma
..
我一直在尝试使用以下 rpath 编译 openssl 1.0.0g: $ORIGIN/../lib64 每次我 readelf -d apps/openssl,我都会得到如下结果,具体取决于我尝试的转义变化: \RIGIN/../lib64RIGIN/../lib64原点/../lib64 我想在不使用像 chrpath 这样的外部工具的情况下设置我的 rpath.有可能吗?我基本上会接
..
在 Linux/GCC 上,我可以使用 -rpath 标志来更改共享库的可执行文件搜索路径,而无需调整环境变量. 这也可以在 Windows 上完成吗?据我所知,总是在可执行文件的目录和 PATH 中搜索 dll. 我的场景:我想根据共享库的属性(32/64 位/调试/发布)将它们放在不同的位置,而无需考虑唯一名称.在 Linux 上,这很容易通过 rpath 完成,但我还没有在 Wi
..
在 Windows 上,我正在使用 CodeSourcery 的交叉编译器套件为 ARM/Linux 交叉编译一个程序.我使用 MinGW MSYS 作为我的命令解释器,它经常会破坏我的路径和路径名.例如,为了构建我的程序,我调用 arm-none-linux-gnueabi-gcc.exe -Wall -g \-Wl,--dynamic-linker=/usr/lib/myrpath/ld-l
..
为方便起见,我在下面添加了相关的联机帮助页. 我的(错误)理解首先:如果我需要用 , 分隔选项,那意味着第二个 -Wl 不是另一个选项,因为它在 之前>, 表示它是 -rpath 选项的参数. 我不明白 -rpath 怎么会有 -Wl,. 参数! 我认为有意义的是: -Wl,-rpath . 这应该使用当前目录参数调用 -rpath 链接器选项. man gcc:
..
我有 Ubuntu 14.04.它带有 openssl 1.0.1f.我想安装另一个openssl版本(1.0.2),我想自己编译它. 我是这样配置的: LDFLAGS='-Wl,--export-dynamic -L/home/myhome/programs/openssl/i/lib-L/home/myhome/programs/zlib/i/lib'CPPFLAGS='-I/home
..
假设我的平台是使用GNU构建工具链(GCC等)的Vanilla(非嵌入式)x86-64 Linux. 要在 RPATH 中指定 $ ORIGIN ,我知道链接器选项: -Wl,-rpath,'\ $ \ $ ORIGIN'. 今天,我发现了另一个选择: -Wl,-z,origin . 使用 -Wl,-rpath,'\ $ \ $ ORIGIN'时是否应该始终包含 -Wl,-z,o
..
我很好奇.我创建了一个共享对象: gcc -o liba.so -fPIC-共享的liba.c 还有一个共享对象,它与前一个对象链接: gcc -o libb.so -fPIC-共享的libb.c liba.so 现在,当创建链接到 libb.so 的可执行文件时,我将必须指定-rpath-link到ld,以便在发现时可以找到 liba.so libb.so 依赖于它: gcc
..
我有以下问题: 我正在尝试使用默认的gnu编译器(gcc-7)和可用的链接器版本在Ubuntu18上构建软件. 现在我们有了一个例子,一个可执行文件可以链接一个共享库,而该库又可以链接另一个共享库.因此,可执行文件具有次要依赖性.但是仅从rpath而不是runpath中获取辅助依赖项.因此,即使将辅助依赖关系放在可执行文件的runpath文件夹中,也不会找到它. 结合使用goog
..
我必须在CentOS 7上构建程序并在其他Linux机器上进行部署.该程序需要较新的版本glibc,并且某些库尚未(也不会)安装在目标计算机上.因此,我决定将可执行文件与动态库一起提供.我用patchelf修补了interpreter和rpath. 我在计算机上测试了可执行文件,并且可执行(也已通过ldd检查以确保使用了新的rpath).但是,当我使用libs复制到其他计算机时,该程序无法运
..
我在Ubuntu 16.04上,并且我需要使用外部库( MCR ).它将所有共享库放在MATLAB/bin/glnxa64/文件夹中.我只需要libmx.so,但那里的库名称与/usr/lib中的库名称完全相同,但实际上它们是不同的(因为文件大小不同),例如libtiff.so.5. 这成为一个问题,因为当我在CMake中使用find_library函数将MATLAB/bin/glnxa64
..
我有一个iOS应用程序(不是用xcode制作的),我需要在其中包含一个动态库.我的计算机上有这个库: \webrtc \WebRTC.framework \Headers \*.h \Modules \module.modulemap \WebRTC \Info.plist
..
我正在尝试解决Rust加载国外库的问题. 输入: 我有一个可执行文件rtest和一个dylib libcpp2rs.dylib.该库通过FFI链接到可执行文件: #[link(name="cpp2rs")] extern { ... } 我的build.rs文件(我正在使用libcpp2rs.dylib位置传递一个额外的参数): pub fn main() {
..
我有一个带有多个自定义动态框架的应用程序,这意味着我将iOS 8用作Xcode 6.2上的SDK.我的Mac在优胜美地上.这些框架具有Swift的资源和资源. 该应用是分布式企业,因此我只需创建一个IPA,然后通过网页在内部进行分发,用户可以在该网页上下载和安装该应用. 该应用程序可以在iPhone 5(iOS 8.1.2),iPod Touch(iOS 8.2)和模拟器但不能在iPh
..
我正在使用cmake创建软件包 我具有以下结构 bin/ bin1 lib/ lib1 lib2 其中lib1和lib2是外部动态库.如何设置RPATH,使其自动与lib1和lib2链接? 解决方案 我也一直在忙于cmake. Cmake在构建时使用CMAKE_SKIP_BUILD_RPATH进行链接,并使用CMAKE_INSTALL_RPATH设
..