>백엔드 개발 >C++ >`link_directories`를 사용할 때 CMake가 내 공유 라이브러리를 찾지 못하는 이유는 무엇입니까?

`link_directories`를 사용할 때 CMake가 내 공유 라이브러리를 찾지 못하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-16 09:32:14267검색

Why Does CMake Fail to Find My Shared Library When Using `link_directories`?

CMake에서 "link_directories"를 사용하여 라이브러리를 찾는 데 어려움을 겪음

CMake의 "link_directories"를 사용하여 공유 라이브러리 libprotobuf.so를 연결하려고 할 때 명령을 실행하면 라이브러리의 함수에 대한 정의되지 않은 참조를 나타내는 링커 오류가 사용자에게 발생합니다. 지정된 디렉터리에 라이브러리가 있음에도 불구하고 CMake가 해당 디렉터리를 찾지 못합니다.

해결책

이 문제는 CMake 명령이 디렉터리 내에 배치되는 순서에서 비롯됩니다. CMakeLists.txt 파일입니다. "link_directories" 명령은 "target_link_libraries" 명령보다 "add_executable" 명령 이전에 호출해야 합니다.

설명

"add_executable"은 실행 가능한 대상을 생성하고 "link_directories"는 검색해야 하는 디렉터리를 지정합니다. 공유 라이브러리의 경우. "add_executable" 명령 뒤에 "link_directories" 명령을 배치하면 실행 파일을 연결하려고 할 때 CMake가 라이브러리를 찾을 수 없습니다.

Modified CMakeLists.txt

link_directories(/usr/lib/x86_64-linux-gnu)
add_executable(test main.cpp)
target_link_libraries(test protobuf)

명령 순서가 수정되면 CMake는 libprotobuf.so 라이브러리를 성공적으로 찾고 링커는 더 이상 정의되지 않은 참조 오류가 발생합니다.

위 내용은 `link_directories`를 사용할 때 CMake가 내 공유 라이브러리를 찾지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.