使用AVR选项编译gcc

时间:2013-06-03 07:48:42

标签: gcc assembly avr

我想生成面向AVR架构的代码的汇编文件,我使用gcc版本4.7.2,其中包含以下参数:

g ++ -O3 -Wall -S -Wp,-mmcu = atmega8 -o“src \ Compression.o”“.. \ src \ Compression.cpp”

但是我收到以下错误:

cc1plus.exe:错误:无法识别的命令行选项'-mmcu = atmega8'

但是我从gcc网站获得了命令选项: http://gcc.gnu.org/onlinedocs/gcc-4.7.3/gcc/AVR-Options.html#AVR-Options

应该有一些我不知道的东西,请你帮帮我吧。

1 个答案:

答案 0 :(得分:4)

如果gcc不接受-mmcu,您可能没有使用支持AVR架构的gcc。

通常像这样使用:

  

avr-gcc -mmcu = atmega328p

因为它不仅是预处理器,它实际上也是需要此设置的其他工具(链接器,汇编器)。

通常编译的架构gcc由前缀表示,在这种情况下按惯例它是avr-

因此,解决方案是获得具有AVR支持的工具链。您可以从Atmel的网站下载它,甚至可以从Linux下载。

更新

如果您想查看gcc的配置,可以使用-dumpmachine检查目标处理器

  

$ gcc -dumpmachine
  i486-linux-gnu

     

$ arm-none-eabi-gcc -dumpmachine
  arm-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是如何构建的。

可能会有另一个陷阱(多库),你可以看到here