共享库的相对路径
问题描述:
我正在使用JNI。我有一个包装库(wrapper.so),它使用两个共享库:one.so和two.so共享库的相对路径
一切工作正常。所有* .so都位于程序文件夹内的lib文件夹中。
问题是,如果我将此文件夹复制到另一台计算机,我会遇到链接问题。
比方说,我在机用户2(/家/用户2 /程序)运行这一点,我在一台机器USER1(/家/用户1 /程序)编译,我得到的链接错误:
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
答
How I can make the linking of the libraries relative to the parent program folder
取决于您的操作系统。在Linux上,这将可能工作:
g++ -shared -o wrapper.so -Wl,-rpath='$ORIGIN' src/wrapper.o one.so two.so
注:单引号重要在上面的命令。
@Rockskull如果答案有效,你应该接受它,或者两者都投票。如果你不这样做,有些人可能不会麻烦地回答你的问题。 –
对不起。新的堆栈溢出。我接受它,但我不能投票。 – lcguida
@EmployedRussian您是否知道intel编译器的相应命令?谢谢。 – xslittlegrass