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

自行编译的AVR GCC 7.5.0无法工作:ld提示找不到-lm和-lc

解决AVR GCC编译时ld找不到-lm/-lc的思路
  • 确认是否遗漏安装avr-libc:AVR的libc、libm属于avr-libc项目,并非gcc自带。按照你参考的指南流程,需在编译完binutils和基础gcc(仅C编译器)后,先安装avr-libc,再完成gcc的完整编译。如果跳过这一步,工具链自然找不到标准库。下载与gcc 7.5.0兼容的avr-libc版本(建议匹配同期版本,如avr-libc 2.0.0),执行以下步骤安装:

    ./configure --prefix=/home/tuser/local/avr --host=avr
    make
    make install
    
  • 检查gcc编译阶段的顺序与参数:旧版AVR工具链编译必须遵循binutils → 基础gcc → avr-libc → 完整gcc的顺序。如果直接编译完整gcc而未先安装avr-libc,gcc无法链接到目标平台的标准库。重新编译gcc时,确保配置参数包含:

    ./configure --prefix=/home/tuser/local/avr --target=avr --enable-languages=c --disable-libssp --disable-nls --disable-shared
    
  • 验证库文件是否存在:检查/home/tuser/local/avr/avr/lib/目录下是否有libc.a、libm.a文件。如果不存在,说明avr-libc安装失败,需排查其编译过程中的错误(比如是否未将binutils的avr-*工具加入PATH)。

  • 手动指定库路径测试:执行编译命令时手动添加库路径,验证是否为路径配置问题:

    avr-gcc test.c -o test -L/home/tuser/local/avr/avr/lib
    

    若成功,说明gcc默认库路径未正确指向avr-libc的安装目录,可检查gcc编译时是否添加了--with-sysroot=/home/tuser/local/avr参数,或修改avr-gcc的默认搜索路径配置。

  • 检查版本兼容性:binutils 2.39属于较新版本,可能与2019年发布的gcc 7.5.0存在兼容性问题。可尝试降级binutils到与gcc 7.5.0同期的版本(如binutils 2.32),重新编译工具链。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:10:23