已安装numactl与numactl-devel,CMake编译项目时仍提示Could NOT find NUMA (missing: NUMA_LIBRARIES)的解决方法
解决CMake找不到NUMA_LIBRARIES的问题
既然你已经安装了numactl和numactl-devel包,CMake依然找不到库文件,大概率是路径识别的问题,试试下面几个方案:
先确认NUMA库的实际位置
先通过命令定位libnuma.so的路径:find /usr -name libnuma.so # 或者用ldconfig查询已注册的库 ldconfig -p | grep numa通常路径会是
/usr/lib64/libnuma.so(64位系统)或者/usr/lib/libnuma.so(32位),同时头文件numa.h一般在/usr/include下。手动指定CMake变量
在运行CMake的时候,直接通过-D参数指定NUMA的库和头文件路径:cmake .. -DNUMA_LIBRARIES=/usr/lib64/libnuma.so -DNUMA_INCLUDE_DIRS=/usr/include如果你的库路径不是这个,替换成上面查询到的实际路径即可。
检查CMake的FindNUMA模块
有些旧版本的CMake自带的FindNUMA.cmake模块可能存在路径搜索不全的问题。你可以:- 查看项目根目录下是否有自定义的
FindNUMA.cmake文件,如果有,打开它确认里面的搜索路径是否包含你的NUMA库所在目录; - 或者临时设置
CMAKE_LIBRARY_PATH环境变量,让CMake优先搜索指定目录:export CMAKE_LIBRARY_PATH=/usr/lib64:$CMAKE_LIBRARY_PATH cmake ..
- 查看项目根目录下是否有自定义的
排查32/64位架构不匹配问题
如果你的系统是64位,但CMake默认在搜索32位库,会导致找不到。可以显式指定架构:cmake .. -DCMAKE_LIBRARY_ARCHITECTURE=x86_64-linux-gnu具体架构值可以根据你的系统调整,比如
aarch64-linux-gnu适用于ARM64系统。
一般来说,前两个方案就能解决大部分问题,如果还是不行,可以检查项目的CMakeLists.txt里是否有特殊的路径设置,或者尝试更新CMake到较新版本。
内容的提问来源于stack exchange,提问作者Steaunk
相关产品推荐
相关产品推荐

