Я разрабатываю динамическую библиотеку libmylib.so
для распространения.Вот почему я связываю его с его зависимостями, используя относительный путь.Мне просто нужно скопировать все зависимости в мою собственную структуру, сгенерировать простой tar
и поделиться им с кем-либо.Он работает нормально для большинства зависимостей, но я пытаюсь сделать то же самое с Caffe (https://github.com/BVLC/caffe).
Я компилирую Caffe, используя CMakeLists.txt через эту команду, чтобы сгенерировать динамическую библиотеку libcaffe.so.1.0.0
.
cmake -DBUILD_SHARED_LIBS=ON ..
Мой вопрос: как построить Caffe, связывающий libcaffe.so.1.0.0
с его зависимостями , используя относительный путь ? Какую модификацию я должен сделать в проекте Caffe CMakeLists.txt
, чтобы выполнитьэта цель?
В моем проекте мне нравится ниже, но я не знаю, как изменить Caffe CMakeLists.txt
к тому же.
SET (DEP_LIBS ${CMAKE_SOURCE_DIR}/../libs)
SET (CMAKE_SHARED_LINKER_FLAGS "-Wl,-rpath,$ORIGIN/../libs")
target_link_libraries(
mylib
${DEP_LIBS}/libcaffe.so.1.0.0
${DEP_LIBS}/otherlibs.so)
Он отлично работает для любого otherlibs.so
, но не для libcaffe.so.1.0.0
. После do ldd -d libmylib.so
я вижу, что Caffe ищет свои зависимости по их первоначальному пути, а не по моей собственной структуре lib, как otherlibs.so
do.