我有一个二进制“CeeloPartyServer”,它需要在运行时在 FreeBSD 机器上找到 libFoundation.so。它们都在同一个目录中。我使用链接器标志(在另一个平台上,使用交叉编译器)编译 CeeloPartyServer -rpath=$ORIGIN
。
> readelf -d CeeloPartyServer |grep -i rpath
0x0000000f (RPATH) Library rpath: [$ORIGIN]
> ls
CeeloPartyServer Contents Foundation.framework libFoundation.so
> ./CeeloPartyServer
/libexec/ld-elf.so.1: Shared object "libFoundation.so" not found, required by "CeeloPartyServer"
为什么我尝试运行它时找不到库?
我的确切链接器行是:-lm -lmysql -rpath=$ORIGIN
.
我很确定我不必转义 $ 或类似的东西,因为我的 readelf 分析确实表明库 rpath 设置为 $ORIGIN。我错过了什么?