CMake无法在/usr/lib/aarch64-linux-gnu/路径下找到UnitTest++库
解决ARM64平台下CMake无法找到UnitTest++库的问题
明确指定库的搜索名称
有时候find_library的自动名称匹配可能出问题,手动指定名称参数试试:find_library(UnitTest++_LIB NAMES UnitTest++ REQUIRED)或者直接指定完整的库文件名:
find_library(UnitTest++_LIB NAMES libUnitTest++.so REQUIRED)后续链接时使用
${UnitTest++_LIB}变量即可。添加ARM64库路径到CMAKE_LIBRARY_PATH
CMAKE_FIND_ROOT_PATH主要用于交叉编译场景,本地编译时应该用CMAKE_LIBRARY_PATH来追加搜索路径:set(CMAKE_LIBRARY_PATH "/usr/lib/aarch64-linux-gnu" ${CMAKE_LIBRARY_PATH}) find_library(UnitTest++ REQUIRED)也可以在执行cmake命令时直接传入参数:
cmake .. -DCMAKE_LIBRARY_PATH=/usr/lib/aarch64-linux-gnu检查库的有效性与权限
先确认库本身没问题:# 查看符号链接状态 ls -l /usr/lib/aarch64-linux-gnu/libUnitTest++.so # 验证库架构是否为ARM64 file /usr/lib/aarch64-linux-gnu/libUnitTest++.so确保库是有效的ARM64二进制文件,且当前用户有读取权限。
改用find_package(如果支持)
如果系统里有UnitTest++的CMake配置文件,用find_package会更可靠:find_package(UnitTest++ REQUIRED)成功找到后,CMake会自动导出
UnitTest++_LIBRARIES等变量供链接使用。手动导入库
要是上面的方法都不管用,直接手动指定库的绝对路径:add_library(UnitTest++ SHARED IMPORTED) set_target_properties(UnitTest++ PROPERTIES IMPORTED_LOCATION "/usr/lib/aarch64-linux-gnu/libUnitTest++.so" )链接时直接引用这个导入目标即可。
内容的提问来源于stack exchange,提问作者Richard Whitehead
相关产品推荐
相关产品推荐

