链接到Cmake中的现有共享库

时间:2013-02-06 16:51:25

标签: c linker cmake ld

我有一个CMAKE项目,我正在使用pcap。在我的cmake文件中,我有以下内容:

target_link_libraries(mylib pcap)

并安装在我的系统上我有以下

在/ usr / lib

/usr/lib/libpcap.so -> /usr/local/lib/libpcap.so

在/ usr / local / lib

/usr/local/lib/libpcap.so.1.3.0
/usr/local/lib/libpcap.a
/usr/local/lib/libpcap.so -> /usr/local/lib/libpcap.so.1.3.0

但是当我构建我的代码并在可执行文件上运行ldd时,我得到了

libpcap.so.1 => not found

所以问题是来自libpcap.so.1的引用在哪里,我该如何解决?无论是在我的cmake设置中还是在系统上更改某些内容。

编辑:我在我的系统上找到了一个,并且libpcap.so.1在系统上绝对没有其他地方

1 个答案:

答案 0 :(得分:0)

此问题的可能解决方案可能如下:

  1. PCAP_LIBRARIES设置为您要链接的库列表(我建议使用绝对路径)
  2. PCAP_LIBRARIES_DIR设置为以列为单位的库所在的目录列表
  3. 设置要链接的库

    target_link_libraries( mylib ${PCAP_LIBRARIES} )

  4. 相应地设置目标属性

    SET_TARGET_PROPERTIES( myexe PROPERTIES INSTALL_RPATH ${PCAP_LIBRARIES_DIR} )