我正在和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
答案 0 :(得分:9)
如何将库相对于父程序文件夹进行链接
取决于您的操作系统。在Linux上,这可能会起作用:
g++ -shared -o wrapper.so -Wl,-rpath='$ORIGIN' src/wrapper.o one.so two.so
注意:单引号在上面的命令中是 important 。