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

Clang14+CMake编译Boost float128时提示'quadmath.h'未找到

解决Boost float128编译找不到quadmath.h的问题

1. 先安装依赖开发包

系统中仅存在libquadmath.a库文件是不够的,quadmath.h头文件需要单独安装开发包:

sudo apt update && sudo apt install libquadmath-dev

2. 调整CMake配置

你之前只处理了库文件的查找,缺少头文件路径的配置,需要同时指定头文件目录和链接库。在你的CMakeLists.txt中添加以下内容:

# 查找quadmath头文件
find_path(QUADMATH_INCLUDE_DIR quadmath.h)
# 查找quadmath库文件
find_library(QUADMATH_LIBRARY NAMES quadmath)

# 校验依赖是否找到
if(NOT QUADMATH_INCLUDE_DIR OR NOT QUADMATH_LIBRARY)
    message(FATAL_ERROR "libquadmath依赖未找到,请先安装libquadmath-dev")
endif()

# 添加头文件包含路径
include_directories(${QUADMATH_INCLUDE_DIR})

# 将quadmath库链接到你的项目目标
target_link_libraries(你的项目目标名 PRIVATE ${QUADMATH_LIBRARY})

如果安装开发包后find_path仍无法定位头文件,可以手动指定GCC版本对应的路径(匹配你系统中libquadmath.a所在的目录):

find_path(QUADMATH_INCLUDE_DIR quadmath.h HINTS /usr/lib/gcc/x86_64-linux-gnu/11/include)
find_library(QUADMATH_LIBRARY NAMES quadmath HINTS /usr/lib/gcc/x86_64-linux-gnu/11)

3. 关于GCC/Intel float128依赖的问题

这个问题直接相关。Boost.multiprecision的float128组件底层依赖GCC提供的__float128类型和libquadmath库(处理四精度浮点运算)。Clang本身在x86_64架构上支持__float128,但默认不会自动搜索GCC的libquadmath头文件和库路径,所以必须手动配置CMake指定这些路径,同时链接libquadmath库才能正常编译。

另外,确保项目编译标准至少为C++11(Boost.multiprecision的最低要求),可以在CMake中添加:

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:02:43