在运行时无法找到与cmake链接的外部库

时间:2014-02-28 16:10:32

标签: c++ cmake fortran

我使用以下cmake命令将外部c ++库链接到现有的cmake项目:

SET (some_src 
  .
  .(sourcefiles here)
  .
  .
  .
  .
)

ADD_LIBRARY(some_proj SHARED ${some_src})

# Adding precompiled NURBS lib
SET(nurbs_libs ${CMAKE_SOURCE_DIR}/src/nurbs/libs)

ADD_LIBRARY( nurbs_C SHARED IMPORTED )
SET_TARGET_PROPERTIES( nurbs_C PROPERTIES 
                                  IMPORTED_LOCATION ${nurbs_libs}/surface.so.1.0 
                                  LINKER_LANGUAGE "CXX")

TARGET_LINK_LIBRARIES( some_proj nurbs_C )        

SET(CMAKE_INSTALL_PATH ${nurbs_libs})

INSTALL(TARGETS some_proj DESTINATION lib)
install(FILES ${nurbs_libs}/surface.so.1.0 DESTINATION lib)

尝试运行使用该库的程序时,我不断收到错误

reels: error while loading shared libraries: 
surface.so.1: cannot open shared object file: No such file or directory

我尝试使用LD_LIBRARY_PATH和RPATH但无济于事。我怀疑我对cmake文件做错了。我该如何处理这个问题?

1 个答案:

答案 0 :(得分:0)

因为你编译了二进制文件,所以你的CMakeLists.txt可能没问题。使用ldd找出您缺少的库。还要检查你是否在磁盘上有surface.so.1(可能是指向surface.so.1.0的链接)