我想生成我的代码面向AVR体系结构的汇编文件,我使用gcc版本4.7.2与以下参数:
g++ -O3 -Wall -S -Wp,-mmcu=atmega8 -o "src压缩。o . . src Compression.cpp"
,但我得到以下错误:
cc1plus.exe:错误:无法识别的命令行选项'-mmcu=atmega8'
但是我从gcc网站上得到了命令选项:http://gcc.gnu.org/onlinedocs/gcc-4.7.3/gcc/AVR-Options.html AVR-Options
应该有一些东西,我错过了,你能帮我这个请!
如果gcc
不接受-mmcu
,您可能没有使用支持AVR体系结构的gcc。
通常这样使用:
avr-gcc -mmcu = atmega328p
因为它不仅是预处理器,实际上其他工具也需要这个设置(链接器,汇编器)。
通常gcc
编译的体系结构由前缀表示,在本例中,按照惯例是avr-
。
因此解决方案是获得具有AVR支持的工具链。你可以从Atmel的网站上下载它,即使是Linux。
更新
如果想检查gcc
的配置,可以使用-dumpmachine
检查目标处理器
$ GCC -dumpmachine
i486-linux-gnu$ arm-none-eabi-gcc -dumpmachinearm-none-eabi
$ avr-gcc -dumpmachine
avr
如果您使用--target-help
查看目标特定选项
$ GCC——target-help | grep march
-march=为给定CPU生成代码
可以看到Linux的gcc
也接受-march
。以后可能会失败。
gcc
是一个非常复杂的软件,因为它只是支持这么多不同的架构。从这个角度来看,效果惊人好。
-v
$ GCC -v
使用内置规格。
目标:i486-linux-gnu
配置:../src/configure -v——with-pkgversion='Debian 4.4.5-8'
[…]
查看gcc
是如何构建的。
接下来可能会有另一个陷阱(multi-lib),就像你在这里看到的