2011-08-23 25 views
5

Pracuję z JNI. Mam bibliotekę otoki (wrapper.so), która korzysta z dwóch współdzielonych bibliotek: one.so and two.sościeżki względne dla bibliotek współużytkowanych

Wszystko działa poprawnie. Wszystkie pliki * .so znajdują się w folderze lib, w folderze programu.

Problem polega na tym, że jeśli skopiuję ten folder na inny komputer, pojawią się problemy z łączeniem.

Powiedzmy to uruchomić na User2 maszynowym (/ home/user2/programu), a ja skompilowany w użytkownika1 maszynowym (/ home/user1/programu), pojawia się błąd łączący:

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

Jak mogę dokonać łączenie bibliotek w stosunku do katalogu z programem rodzic (jak, szukaj this_foler/lib ??

jak ja opracowującym :

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

Odpowiedz

8

How I can make the linking of the libraries relative to the parent program folder

Zależy od systemu operacyjnego. Na Linuksie, to prawdopodobnie będzie działać:

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

Uwaga: pojedyncze cudzysłowy są ważną w powyższym poleceniu.

+1

@Rockskull, jeśli odpowiedź zadziała, powinieneś ją zaakceptować, zagłosować, lub jedno i drugie. Jeśli nie, niektóre osoby mogą nie zadawać sobie trudu, odpowiadając na pytania nex time. –

+0

Przepraszamy. Nowość w przepełnieniu stosu. Akceptuję to, ale nie mogę tego głosować. – lcguida

+0

@EmployedRussian Czy znasz odpowiednie polecenie kompilatora intel? Dzięki. – xslittlegrass

Powiązane problemy