[英]Cmake linking to shared library cannot find library
在Ubuntu上,我有兩個目錄: build
和src
。 在src
,我的CMakeLists.txt
文件包含以下行:
add_executable(Test main.cpp)
target_link_libraries(Test libCamera.so)
在構建目錄( cmake ../src
)中運行cmake之后,然后將庫文件libCamera.so
復制到構建目錄中。 運行make之后, main.cpp.o
文件成功編譯,但是在鏈接期間出現以下錯誤:
/usr/bin/ld: cannot find -lCamera
為什么是這樣? 共享庫位於我正在構建的目錄中...如果將庫復制到/usr/bin
也會發生相同的事情...
您不應在庫中添加前綴lib
和后綴.so
,因此只需使用:
target_link_libraries(Test Camera)
如果找不到您的庫,則可能需要添加目錄,該目錄位於庫所在的位置:
link_directories( /home/user/blah ) # for specific path
link_directories( ${CMAKE_CURRENT_BINARY_DIR} ) # if you put library where binary is generated
注意:您將lib復制到/usr/bin
但是與Windows(其中dll文件存儲有可執行文件)不同,在Linux中不是這樣,因此它將是/usr/lib
,而不是/usr/bin
。 另外,您可以更改LD_LIBRARY_PATH
變量,以使程序在自定義位置中查找庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.