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

使用Conan 2.0.9安装SDL2时PulseAudio编译链接错误求助

解决Conan安装SDL2时Pulseaudio编译链接符号未定义问题

问题概述

使用Conan 2.0.9,基于GCC 11的Linux环境,安装SDL2(版本2.26.5)时,编译依赖的Pulseaudio库出现链接错误,提示__exp_finite、__log_finite、__exp2_finite等符号未定义,更换多个Pulseaudio版本后问题依然存在。

环境配置(build profile):

Profile build:
[settings]
arch=x86_64
build_type=Release
compiler=gcc
compiler.cppstd=gnu17
compiler.libcxx=libstdc++11
compiler.version=11
os=Linux
[conf]
tools.system.package_manager:mode=install
tools.system.package_manager:sudo=True

Conanfile.txt内容:

[requires]
sdl/2.26.5

[generators]
CMakeDeps
CMakeToolchain

执行命令:

conan install . --output-folder=build --build=missing

可行解决方案

1. 强制链接数学库(libm)

上述未定义符号属于数学标准库(libm),Pulseaudio的编译脚本可能未自动添加链接依赖。可以通过以下方式强制添加:

  • 临时命令行参数:在安装时追加编译和链接选项
conan install . --output-folder=build --build=missing \
  -c tools.build:cxxflags="-lm" \
  -c tools.build:ldflags="-lm"
  • 通过conanfile.py配置:替换原conanfile.txt,显式为Pulseaudio添加链接选项
from conan import ConanFile

class SDLProjectConan(ConanFile):
    requires = "sdl/2.26.5"
    generators = "CMakeDeps", "CMakeToolchain"

    def configure(self):
        if "pulseaudio" in self.dependencies:
            pulse_dep = self.dependencies["pulseaudio"]
            pulse_dep.cppflags.append("-lm")
            pulse_dep.ldflags.append("-lm")

2. 使用系统预编译的Pulseaudio

跳过源码编译,直接复用系统包管理器安装的Pulseaudio库,让Conan优先调用系统版本:

  • 先通过系统包管理器安装依赖(以Debian/Ubuntu为例):
sudo apt install pulseaudio libpulse-dev
  • 执行Conan安装时指定使用系统Pulseaudio:
conan install . --output-folder=build --build=missing \
  -c pulseaudio/*:system=True

3. 修正编译标准配置

原profile中compiler.cppstd=gnu17的写法可能存在问题,GCC的C++标准正确写法应为gnu++17,修改profile后重新安装:
修改build profile中的对应项:

compiler.cppstd=gnu++17

然后重新执行原安装命令。

4. 应用Pulseaudio配方补丁

部分Conan中心的Pulseaudio配方缺失libm链接配置,可以手动给配方添加补丁:
找到Pulseaudio的Conan配方文件(通常在Conan本地缓存中),修改其build()方法,在编译步骤中添加-lm链接选项,或者使用社区维护的修复版配方。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 10:02:52