Я пытаюсь сгенерировать библиотеку C++ с помощью компилятора g ++. В моей библиотеке есть другая библиотека C как зависимость, и я скомпилировал ее для получения .so-файлов.g ++ не найти .so файлы
I имеют следующую структуру:
src:
include/linux:
libcustom.a
libcustom.la
libcustom.so
libcustom.so.0
libcustom.so.0.0.0
Теперь, когда у меня есть все .o файлы моих классов CPP, и я хочу связать библиотеку, я выполнить следующую команду:
g++ -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions -Wl,-z,relro -o mylibrary.so File1.o File2.o File3.o -L./include/linux -lc++ -lutil -lm -lcustom -Wl,-rpath='$ORIGIN/include/linux' -L/usr/lib/R/lib -lR
Но он бросает мне ошибку:
libcustom.so.0: cannot open shared object file: No such file or directory
Я уверен, выполнение команды из src
каталог.
Я знаю, что это может быть исправлено редактирование LD_LIBRARY_PATH
, но идея, что это кто-то, может использовать мою библиотеку без необходимости чего-либо настраивать, поэтому я пытаюсь сделать это с флагом -rpath C++.
Любая идея, как я могу ее исправить, или причина ошибки?
используется относительный путь '-Wl, -rpath =./Включать/linux', который не распознается загрузчик 'ld' в Linux. Вместо этого используйте абсолютный путь. Для правильного использования относительного пути, goto http://stackoverflow.com/a/4018559/6238076 – gdlmx