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

Ubuntu20.04.4用Homebrew装g++12后编译报ld: cannot find -lm错误

解决Homebrew安装的g++12在Ubuntu20.04编译时找不到-lm的问题

问题分析

Homebrew安装的GCC未正确配置链接器路径,导致系统默认ld无法找到Homebrew版本的数学库(libm),或是链接器优先调用了系统旧版工具链。

可行解决方案

  • 使用Homebrew GCC配套的链接器
    直接指定用Homebrew自带的链接器替代系统ld,编译命令示例:

    g++-12 -std=gnu++20 main.cpp track.cpp -o track -fuse-ld=lld
    # 或指定Homebrew ld的绝对路径
    g++-12 -std=gnu++20 main.cpp track.cpp -o track -fuse-ld=/home/linuxbrew/.linuxbrew/bin/ld
    
  • 配置环境变量优先搜索Homebrew库路径
    检查当前环境变量是否包含Homebrew的lib路径:

    echo $LIBRARY_PATH
    

    若输出无/home/linuxbrew/.linuxbrew/lib,执行以下命令添加(可写入/.bashrc或/.zshrc永久生效):

    export LIBRARY_PATH=/home/linuxbrew/.linuxbrew/lib:$LIBRARY_PATH
    export LD_LIBRARY_PATH=/home/linuxbrew/.linuxbrew/lib:$LD_LIBRARY_PATH
    

    重启终端后再执行编译命令。

  • 手动指定libm路径并调整参数顺序
    链接器按顺序处理依赖,需将-lm放在源文件之后,同时指定Homebrew的lib路径:

    g++-12 -std=gnu++20 main.cpp track.cpp -o track -L/home/linuxbrew/.linuxbrew/lib -lm
    
  • 重新安装Homebrew GCC
    若上述方法均无效,可能是安装文件损坏,重新安装:

    brew uninstall gcc
    brew install gcc
    

    安装完成后重启终端再尝试编译。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:20:49