2014-02-28 48 views
0

发现我已经连接外部C++ - 使用下面的cmake命令图书馆现有cmake的项目:与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文件的错误。我该如何处理这个问题?

回答

0

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