clang - 在 Mac OS 上使用 AVR-GCC 编译时引发 Clang 错误
问题描述
我正在尝试使用通过 macports 安装的 avr-gcc 交叉编译 AVR 的程序。在终端:
avr-gcc -O1 -DF_CPU=1000000UL -DBAUD=9600 -I. -I/opt/local/avr/include/ -Wl,-Map,main.map -mmcu=atmega328p main.c -c
这导致错误:
clang: error: unknown argument: '-mgcc-isr'
clang: error: unknown argument: '-mno-skip-bug'
上面的交叉编译过去可以工作,但是在更新到 Catalina 并重新安装 avr-gcc 之后,事情变得一团糟。搜索谷歌我发现,对于较新版本的 Clang,如果 Clang 无法识别命令行参数,则会引发错误。建议使用类似 -Wno-error=gcc-isr 的东西。所以我的命令变成:
avr-gcc -O1 -Wno-error=gcc-isr -DF_CPU=1000000UL -DBAUD=9600 -I. -I/opt/local/avr/include/ -Wl,-Map,main.map -mmcu=atmega328p main.c -c
这导致:
cc1: error: ‘-Werror=gcc-isr’: no option -Wgcc-isr
看起来 Clang 和 avr-gcc 之间有些混乱。虽然我不确定为什么在使用 avr-gcc 时会调用 Clang。有谁知道这里发生了什么?
解决方案
好的,我不确定为什么用 avr-gcc 调用 clang,但我确实设法通过卸载来编译代码:(1) avr-gcc 和 (2) avr-binutils 通过 macports 使用:
sudo port uninstall avr-binutils
sudo port uninstall avr-libc (I uninstalled this because it depends on avr-gcc)
sudo port uninstall avr-gcc
然后我重新安装了它
sudo port install avr-gcc
它询问我是否要安装 avr-binutils。然后我重新安装了avr-libc。这些是直接的步骤。当它问我是否要安装 avr-binutils 时,我按“N”是错误的。所以我添加了:
sudo port clean avr-binutils
清除该错误。清除后,我可以按照上述步骤操作。同样,这只是通过重新安装交叉编译软件来清除错误,但我仍然认为对原始问题存在一些潜在的误解。
推荐阅读
- identityserver4 - IdentityServer 和会话存储
- c# - 为什么身份框架核心哈希密码都以相同的开头?
- javascript - 仅接收发送的最后一条消息(Firebase 云消息传递)
- mysql - 使用两个条件更新 sql 中的列
- reactjs - 为什么需要 refetchQueries?
- xcode - 如何配置 Azure-DevOps 发布管道任务以在 MacBook 的 xcode 上启动自动化 UI 测试脚本?
- php - “无法连接到 PostgreSQL 服务器:连接中的“0”后缺少“=”错误
- python - 我怎样才能用python而不是终端macos连接(ssh远程)mongodb?
- github-api - 使用一个请求从 GitHub API 获取整个存储库结构
- angular - 在没有控制器的情况下添加和删除类 Angular