gpt4 book ai didi

arduino - 如何使用 clang 编译 avr (arduino)

转载 作者:行者123 更新时间:2023-12-04 13:54:13 26 4
gpt4 key购买 nike

当我搜索时,我发现 7 年前的结果谈论的是 clang 的 fork 而不是 clang 本身。
使用 avr-gcc 我可以编译和上传我的代码

avr-gcc a.cpp -DF_CPU=16000000 -mmcu=atmega2560 -Wall -Werror -Wextra -Os
avr-objcopy -j .text -j .data -O ihex a.out my.hex
sudo avrdude -patmega2560 -cwiring -P/dev/ttyACM0 -b115200 -D -Uflash:w:my.hex:i
我想用 clang++ 替换第一步.我在这里所做的更改
  • avr-gcc 到 clang++
  • 已添加 --target=avr
  • 已添加 -nostdlib因为我会自己包含它
  • 已添加 -I/usr/avr/include/因为路径不是隐式的
  • 已添加 -L/usr/avr/lib/avr6 -lc -latmega2560所以它有足够的信息来构建一个 Sprite

  • 我在/usr/lib/gcc/avr/10.2.0/device-specs/specs-atmega2560 找到设备规范,其中提到 crtatmega2560.o-latmega2560似乎位于 /usr/avr/lib/avr6/ .所以我想出了以下内容并得到了这些错误。我应该如何编译才能使用avrdude上传十六进制?
    $ clang++ a.cpp -DF_CPU=16000000 -mmcu=atmega2560 -Wall -Werror -Wextra -Os --target=avr -I/usr/avr/include/ -nostdlib -L/usr/avr/lib/avr6 -lc -latmega2560
    /usr/bin/avr-ld: skipping incompatible /usr/avr/lib/avr6/libc.a when searching for -lc
    /usr/bin/avr-ld: cannot find -lc
    /usr/bin/avr-ld: skipping incompatible /usr/avr/lib/avr6/libatmega2560.a when searching for -latmega2560
    /usr/bin/avr-ld: cannot find -latmega2560

    最佳答案

    AVR 目标 is experimental在 LLVM 编译器中,clang 是 C 和 C++ 的前端。要启用实验目标,您必须从源代码编译 LLVM。 This Stack Overflow answer描述了如何做。
    看着 the bug tracker我认为它是实验性的有充分的理由。

    关于arduino - 如何使用 clang 编译 avr (arduino),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65486380/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com