You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 24.04下CMake链接GMP与MPFR库报错求助

解决Ubuntu 24.04下CMake无法找到GMP/MPFR库的问题

问题原因

你遇到的CMake错误是因为Ubuntu的libgmp-dev和libmpfr-dev包仅安装了库文件与头文件,并未提供CMake默认查找的包配置文件(如GMPConfig.cmake)。CMake默认优先使用CONFIG模式查找配置文件,找不到时才会尝试内置的Find模块,但你的场景中未自动触发模块查找流程。

解决方案

方案1:使用pkg-config定位库(推荐)

Debian/Ubuntu系开发包通常会提供pkg-config配置文件,可在CMake中直接利用:

修改你的CMakeLists.txt如下:

cmake_minimum_required(VERSION 3.29)
project(find_gmp)

set(CMAKE_CXX_STANDARD 20)

# 先查找pkg-config工具
find_package(PkgConfig REQUIRED)

# 通过pkg-config定位GMP和MPFR
pkg_check_modules(GMP REQUIRED IMPORTED_TARGET gmp)
pkg_check_modules(MPFR REQUIRED IMPORTED_TARGET mpfr)

add_executable(find_gmp main.cpp)

# 链接找到的库
target_link_libraries(find_gmp PRIVATE PkgConfig::GMP PkgConfig::MPFR)

方案2:强制使用CMake内置Find模块

CMake自带FindGMP.cmake和FindMPFR.cmake模块,可显式指定使用MODULE模式查找:

修改后的CMakeLists.txt:

cmake_minimum_required(VERSION 3.29)
project(find_gmp)

set(CMAKE_CXX_STANDARD 20)

# 强制使用MODULE模式查找库
find_package(GMP REQUIRED MODULE)
find_package(MPFR REQUIRED MODULE)

add_executable(find_gmp main.cpp)

# 链接库(支持导入目标的CMake版本)
target_link_libraries(find_gmp PRIVATE GMP::GMP MPFR::MPFR)

若你的CMake版本不支持导入目标,可改用变量形式:

find_package(GMP REQUIRED MODULE)
find_package(MPFR REQUIRED MODULE)

include_directories(${GMP_INCLUDE_DIRS} ${MPFR_INCLUDE_DIRS})
target_link_libraries(find_gmp PRIVATE ${GMP_LIBRARIES} ${MPFR_LIBRARIES})

额外注意事项

  1. 确保已安装cmake包:sudo apt install cmake
  2. 若之前运行过CMake失败,需删除构建目录下的缓存文件(如CMakeCache.txt),重新执行CMake命令。

内容的提问来源于stack exchange,提问作者FreddyMro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:22:05