注释
|
同样的问题在这里… |
|
我在 GCC bugzilla 上报告了这个问题:https ://gcc.gnu.org/bugzilla/show_bug.cgi?id=91189 |
|
同样的问题在这里。固定降级到 avr-gcc-8.3.0 |
|
同样的问题,有更新吗? |
|
gcc9同样的问题 |
|
找到了一个简单的解决方法。Arduino IDE 1.8.10 不存在这个问题,但是,在撰写本文时,它目前在 pacman 上不可用。最简单的解决方法是卸载系统上的所有 Arduino 软件,转到适用于 Linux 的 Arduino 下载页面,下载 1.8.10,解压缩,然后运行 install.sh 脚本。 |
|
@cramsted,您的解决方法会有所帮助,因为 Arduino 及其 IDE在版本7中最多支持avr-gcc(请查看此文件http://downloads.arduino.cc/packages/package_index.json以供参考)。但是我知道有人想要用最新版本的gcc编译它。 这里qmk/qmk_firmware#6719他们有同样的问题。 |
|
我能够重现这个问题@ntd描述的。我在Eclipse 中使用 Sloeber为Arduino UNO板(Atmega 328P 处理器)进行编译(但稍加修改以使用 avr-gcc-8.3.0 和 avr-gcc-9.1.0 )。事实上,文本大小从29790字节增加到35496字节。 请查看随附的grbl_disassembly.zip文件它包含:
您可以轻松地比较grbl_gcc_8.3.0_disassembly.txt和grbl_gcc-9.1.0-disassembly.txt以查看其编译方式。
但是对于gcc-9.1.0我们有:
使用gcc-9.1.0编译时看起来很复杂。 来自GCC项目的人可能对此了解更多。也许这与通话约定有关?也许有一些开关/配置参数需要传递给gcc-9.1.0编译器,但在gcc-8.3.0中不需要? |
|
我之前的评论中的四个std和ldd指令,在调用指令之前似乎“什么都不做”。根据AVR Instruction Set Manual,首先将r22 – r25寄存器存储在内存中的某个位置,然后再恢复回来。中间没有其他指令,所以看起来这八个操作是不必要的;他们使最终图像更大。 |
|
@ntd我去做。目前我正在等待我的 gcc bugzilla 帐户(它需要由管理员手动创建)。 |
|
我在旧的 ubuntu 上做了这个十六进制。希望它能帮助别人。#441 arduino-cli core install arduino:avr
arduino-cli upload -v -i grbl.hex -b arduino:avr:nano -p /dev/ttyUSB3
#arduino-cli upload -v -i grbl.hex -b arduino:avr:nano:cpu=atmega328old -p /dev/ttyUSB3
|
|
我在使用 GCC AVR 9.2.0 时遇到过同样的问题 我已经能够通过使用 toolbox create --release f30
toolbox enter --release f30
sudo dnf install avr-gcc-7.4.0-5.fc30 avr-libc make
make -j
在容器中用GCC 7.4.0编译的结果:
|
|
我发现的另一个解决方法是使用使用 gcc 5.4.0 的 ubuntu 20.04: docker run --user ${UID}:${GID} --rm -it -v ${PWD}:/mount rubberduck/avr make grbl.hex
|
|
avr-gcc 错误编译
id 没有找到 libisl.so |


在 ArchLinux current 上编译定制的 GRBL 1.1f 时,我得到一个sketch too big错误(使用了 110% 的内存)。为了安全起见,我尝试构建一个普通的 grbl-master 图像,这是错误消息:
降级
avr-gcc-9.1.0解决avr-gcc-8.3.0问题。建立相同的草图给出: