我试图将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包含完整路径(这不是我想要做的,因为我想发送可执行文件这两个库位于exectuable的同一文件夹中(或最多一个子文件夹)。
我错过了一些微不足道的事情吗?