编译带有AVR选项的gcc



我想生成我的代码面向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),就像你在这里看到的

最新更新