- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我使用动态链接到另一个的 premake (gmake) 构建了一个二进制文件。当我随后尝试运行二进制文件时,它提示找不到动态库。
ldd
在二进制文件上,当然还有动态库是 => Not Found!
我当然可以export LD_LIBRARY_PATH=<path of the dynamic library
> 但我不想那样。
我希望二进制文件能够在不同的机器上开箱即用(当然假设动态库位置没有改变)
1- 人们如何做到这一点?他们设置了RPATH
一直通过链接器标志?
根据我收集到的信息,RUNPATH
可以被 LD_LIBRARY_PATH
覆盖但 RPATH
并非如此.
有 -rpath
和 --enable-new-dtags
将指示 gcc
的选项(或者更准确地说是链接器)同时设置 RUNPATH
和 RPATH
到相同的值,但这不是我真正想要的,我什至看不出那有什么意义。
2- 这有什么意义?
3- 我错过了什么吗?如何设置 RUN_PATH
仅,因此通常会自动找到依赖项(在 RUN_PATH
中),除非指示使用 LD_LIBRARY_PATH
搜索特定路径首先。
最佳答案
在我的笔记本电脑上,路径可能与您的不同,但“-d”选项应该可以。
用法:c:/strawberry/c/bin/../lib/gcc/x86_64-w64-mingw32/4.7.3/../../../../x86_64-w64-mingw32/bin/ld.exe [选项] 文件...
选项: -d, -dc, -dp 强制定义公共(public)符号
关于linux - 如何在不设置 RPATH 的情况下设置 RUNPATH,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26924826/
我有一个 Linux C++ 程序可以构建和链接(使用 -Wl,--no-undefined,同样如此)但是当我尝试运行它时无法加载它的所有库。我一直在尝试使用 ldd 检查它的依赖关系,但我无法弄清
我使用动态链接到另一个的 premake (gmake) 构建了一个二进制文件。当我随后尝试运行二进制文件时,它提示找不到动态库。 ldd在二进制文件上,当然还有动态库是 => Not Found!
我在我的环境中定制了 gcc-4.7.2。系统 gcc 是 gcc-4.3.4。 我已经使用 patchelf --set-rpath 为所有自定义 gcc 的二进制文件和共享库修补了 RUNPATH
This page说到 ld.so 中库搜索的顺序: Unless loading object has RUNPATH: RPATH of the loading object,
我最近在升级系统后遇到这个问题:使用 GCC -Wl,-rpath= 选项的工作方式与以前不同。 我用它来设置一些共享库的搜索路径,这些共享库是在我的项目的子模块中构建的。当时我认为它比在系统范围内设
我有一个 Linux 共享对象,它与一些共享对象动态链接,其中一些又进一步与其他共享对象动态链接,需要间接动态链接。为了找到那些 SO,我通过将链接器标志传递给 G++ 将 RPATH header
我有一个 Linux 共享对象,它与一些共享对象动态链接,其中一些又进一步与其他共享对象动态链接,需要间接动态链接。为了找到那些 SO,我通过将链接器标志传递给 G++ 将 RPATH header
我有这样的目录结构:符号链接(symbolic link)指向目录,符号链接(symbolic link)指向库: $ libtrotl.so -> /usr/local/lib64/tora-3.1
我是一名优秀的程序员,十分优秀!