4

我正在尝试将 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 包含两个完整路径(这不是我想要做的,因为我想随两个库一起发布可执行文件在可执行文件的同一文件夹中(或最多子文件夹)。

我错过了一些微不足道的事情吗?

4

0 回答 0