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

Eigen 3.4编译报错找不到mpreal.h,如何配置MPFR C++依赖?

解决Eigen集成mpreal时的头文件缺失问题

问题原因

编译报错mpreal.h: No such file or directory,本质是CMake未将mpreal的头文件目录加入搜索路径,同时未正确处理mpreal依赖的MPFR底层库。

修复步骤

1. 添加mpreal头文件路径

mpreal是仅头文件库,需将你克隆的mpreal根目录添加到项目的头文件搜索路径中。假设mpreal存放在项目的third_party/mpreal目录,在CMakeLists.txt中添加:

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/mpreal)

如果mpreal已安装到系统标准路径(如/usr/include),可跳过此步骤。

2. 链接MPFR依赖库

mpreal底层依赖MPFR C库,需在CMake中查找并链接该库:

FIND_PACKAGE(MPFR REQUIRED)
TARGET_LINK_LIBRARIES(momentspp PRIVATE ${MPFR_LIBRARIES})
INCLUDE_DIRECTORIES(${MPFR_INCLUDE_DIRS})

3. 完整CMake配置示例

将上述配置整合到项目的CMakeLists.txt中,核心片段如下:

# 定义项目目标
ADD_LIBRARY(momentspp src/Data.cpp src/SumStatsLibrary.cpp)

# Eigen头文件路径(若系统未自动识别)
INCLUDE_DIRECTORIES(/usr/include/eigen3)

# 添加mpreal头文件路径
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/third_party/mpreal)

# 链接MPFR依赖库
FIND_PACKAGE(MPFR REQUIRED)
TARGET_LINK_LIBRARIES(momentspp PRIVATE ${MPFR_LIBRARIES})
INCLUDE_DIRECTORIES(${MPFR_INCLUDE_DIRS})

4. 重新构建项目

删除旧的build目录,重新生成构建文件并编译:

rm -rf build && mkdir build && cd build
cmake ..
make

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:25:09