在linux環境下編譯avr單片機程序

看到公司的老外都是用Linux編譯AVR的程序,感覺很強,而且本人也很喜歡linux,所以決定進行學習,現記錄一下學習過程:

  首先安裝avr-gcc和avr-gdb:

   sudo apt-get install gcc-avr

   sudo apt-get install gdb-avr simulavr avrdude

1.編譯我們的算法文件,也就是老外以前發給我們這邊的關於算法的.o文件。遇到小困難,提示for' loop initial declaration used outside C99 mode

   ,網上查了一下,在編譯的時候加上-std=c99就OK了,聽說將for循環裏的變量放到外面也可以;

2.在編譯彙編文件的時候,出現了很多錯誤,看上去就好像編譯器把彙編文件當成了.c文件,在選項中加上-x assembler-with-cpp就好多了;

3.將各個源文件編譯成.o文件後,進行鏈接生成.elf文件,但總是提示:undefined reference to 'asm',asm是用來嵌入彙編的,找了很久,即使使用winavr相同的命令,最後鏈接的時候還是會出現這個錯誤。經過長期的和winavr之間的對比,終於發現:其實就是在第一步上面加的-std=c99有問題,winavr上使用的是-std=gnu99,將文件全部重新編譯之後,OK,最後使用avr-objcopy將.elf轉換爲.hex,Finished!

發佈了37 篇原創文章 · 獲贊 1 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章