【问题标题】:Cannot compile and link AVR program in OS X无法在 OS X 中编译和链接 AVR 程序
【发布时间】:2015-07-31 07:26:16
【问题描述】:

我正在使用 Yosemite OS X 的 Mac 上工作,我正在尝试用 C 语言编译一个程序,然后我可以将它上传到我的 Arduino 上。我正在关注a tutorial

我尝试通过并重新安装 avr-gcc,但我得到了相同的输出。我尝试在我的系统上搜索文件crtatmega328p.o,但找不到它,目录也是如此。

$ avr-gcc -Os -DF_CPU=16000000UL -mmcu=atmega328p -c -o Program.o Program.c
$ avr-gcc -mmcu=atmega328p Program.o -o Program
/usr/local/lib/gcc/avr/5.2.0/../../../../avr/bin/ld: cannot find crtatmega328p.o: No such file or directory

/usr/local/lib/gcc/avr/5.2.0/../../../../avr/bin/ld: cannot find -latmega328p
collect2: error: ld returned 1 exit status

【问题讨论】:

  • @Kavanai4 据我所知,没有办法使用 Arduino IDE 在纯 C 语言中编程
  • @Kavanai4 目前我只有 Arduino,但我最终想在 Arduino IDE 没有帮助的情况下开始对 AVR 微控制器进行原始编程。在我把钱花在新硬件上之前,我想确保我可以先在 Arduino 上做到这一点,因为我已经拥有一个。
  • 你从哪里得到 avr-gcc?
  • 我知道这不是一个解决方案,但我会建议暂时退回到 4.9.x。 5.2.0 似乎正在寻找 avr-libc 没有提供的目标文件,至少没有提供给定的文件名。
  • @IgnacioVazquez-Abrams:我安装了 avr-gcc-4.9.0 并且错误消失了。我能够链接程序,创建一个十六进制文件,闪烁它,现在 LED 灯正在闪烁!请发表您的评论作为答案,这样我就可以给您信用。

标签: arduino avr libc atmega avr-gcc


【解决方案1】:

上周我刚刚在 GNU/Linux 上遇到了这个问题。

实际上,编译器工作正常。问题的原因是针对 avr-libc 的链接尝试失败。

avr-libc-1.8.1 太旧了,无法与 GCC 5 一起工作。虽然1.8.1avr-libc 的最新版本,但它是在一年前发布的...avr-libc 的开发版本已更新以捕获在 GCC 5 上,您可以克隆 subversion 存储库:

svn co svn://svn.savannah.nongnu.org/avr-libc/trunk

并自己编译。如果您不熟悉如何从源代码编译自己的自制工具链,网上有很多文档和教程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    相关资源
    最近更新 更多