Я пытаюсь связать сборку cmake с двумя общими библиотеками, связывание происходит, но RPATH
указывает на абсолютный путь одной из двух библиотек, в то время как readelf
вывод неверен для другого.
Я сделал следующее:
add_library(foo SHARED IMPORTED)
set_target_properties(foo
PROPERTIES IMPORTED_LOCATION ${LIBS_DIRECTORY}/foo/libfoo.so
)
add_library(bar SHARED IMPORTED)
set_target_properties(bar
PROPERTIES IMPORTED_LOCATION ${LIBS_DIRECTORY}/foo/libbar.so
)
target_link_libraries(myprogram foo bar)
Это работает, и связывание происходит, но readelf печатает следующее:
0x0000000000000001 (NEEDED) Shared library: [../../../libs/foo/libfoo.so]
0x0000000000000001 (NEEDED) Shared library: [libbar.so]
0x000000000000000f (RPATH) Library rpath: [/home/user/test/trunk/libs/foo:/home/user/test/trunk/libs/bar]
Так что в основном одна из двух библиотек (но только одна, и это не имеет смысла) имеет абсолютный путь, в то время как rpath содержит оба полных пути (это не то, что я хочу сделать, так как я хочу отправить исполняемый файл с двумя библиотеками в одной и той же папке (или не более).
Я что-то упускаю тривиально?
Задача ещё не решена.
Других решений пока нет …