Я делаю программу с использованием динамической библиотеки libexample.so. Динамическая библиотека зависит от другой динамической библиотеки libtool.so.Как связать динамическую библиотеку в зависимости от другой динамической библиотеки?
Это выглядит, как линкер, удалось связать libexample.so из-за сообщения из gcc.
Building target: libexample.so
Invoking: GCC C++ Linker
g++ -L/home/takehiro/Documents/documents/code/lib/tool -shared -o "libexample.so" ./classes/example.o ./classes/example_template.o ./classes/example_test.o ./classes/impl.o -ltool
Finished building target: libexample.so
cp libexample.so /home/takehiro/Documents/documents/code/lib/example
Однако он не смог связать его с libtool.so.
ldd /home/takehiro/Documents/documents/code/lib/example/libexample.so
...
libtool.so => not found
...
Я проверил существование libtool.so в/дома/Такэхиро/Документы/документы/код/Lib/инструмент, который указываемой -L optoin при температуре выше линкера по
ls /home/takehiro/Documents/documents/code/lib/tool
libtool.so
Это в первый раз использовать динамическую библиотеку в зависимости от другой динамической библиотеки. Поэтому я так смущен. Это нормально или неисправно? Почему он не может их связать? У кого-то есть предложение или решение для меня? Я очень рад этому. спасибо.
Спасибо, Сэм Варшавчик, за ответ. Пожалуйста, позвольте мне подтвердить следующее. В случае файла исполнения я могу использовать LD_LIBRARY_PATH, чтобы узнать местоположение библиотеки. Однако в случае использования общей библиотеки в зависимости от другой общей библиотеки она не использует LD_LIBRARY_PATH. Это правильно? – mora
Это так, но использование '-rpath' позволяет не использовать LD_LIBRARY_PATH явно. –
Еще раз спасибо, Сэм Варшавчик. Я использовал LD_LIBRARY_PATH через eclipse. Это временная LD_LIBRAY_PATH. Это может быть причиной того, что программа выполнения не могла найти ссылку на функцию в общей библиотеке. Во всяком случае, я буду использовать -rpath. Большое спасибо. – mora