共享库的相对路径

时间:2011-08-23 16:56:10

标签: linker g++ java-native-interface shared

我正在和JNI合作。我有一个包装器库(wrapper.so),它使用两个共享库:one.so和two.so

一切正常。所有* .so都在程序文件夹中的lib文件夹中。

问题是,如果我将此文件夹复制到另一台计算机,我会遇到链接问题。

假设我在机器user2(/ home / user2 / program)上运行它,并且我在机器user1(/ home / user1 / program)中编译,我得到链接错误:

UnsatisfiedLinkError:/home/user1/program/lib/one.so

如何将库相对于父程序文件夹进行链接(例如,搜索this_foler / lib ??

我正在编译:

g++ -c -o src/wrapper.o src/wrapper.c
g++ -shared -o wrapper.so src/wrapper.o one.so two.so

1 个答案:

答案 0 :(得分:9)

  

如何将库相对于父程序文件夹进行链接

取决于您的操作系统。在Linux上,这可能会起作用:

g++ -shared -o wrapper.so -Wl,-rpath='$ORIGIN' src/wrapper.o one.so two.so

注意:单引号在上面的命令中是 important