" avr-gcc:找不到命令"在Ubuntu上

时间:2015-12-09 16:47:34

标签: ubuntu gcc

我正在尝试从家里开展Arduino项目。但是,当我尝试运行示例代码时,我收到错误:

  

avr-gcc:找不到命令

这个程序在大学计算机上运行良好。但是,我的Ubuntu虚拟机上根本没有工作。我对此完全陌生。所以,老实说,我不知道出了什么问题。

3 个答案:

答案 0 :(得分:4)

  

avr-gcc:找不到命令

这正是它的含义:avr-gcc命令无法找到。

avr-gcc上的搜索会快速显示AVR Libc project

  

AVR Libc是一个自由软件项目,其目标是为Atmel AVR微控制器上的GCC提供高质量的C库。

     

avr-binutils,avr-gcc和avr-libc共同构成了Atmel AVR微控制器自由软件工具链的核心。

自从Arduino uses Atmel CPUs以来,这听起来很有希望。

在搜索字词中添加ubuntu会找到the gcc-avr package。在VM上运行sudo apt-get install gcc-avr应该安装软件包。

答案 1 :(得分:1)

我尝试过的是:

yum install *avr*gcc*

那发现我在centos上找到了其他一些带有通配符的较长软件包。我发布此答案,因为这适用于更多情况和其他情况。

答案 2 :(得分:1)

您可能需要flex,byacc,bison,gcc和libusb-dev:

sudo apt-get install flex byacc bison gcc libusb-dev

和libusb点信息中的libusb,然后在终端中使用以下命令从其根安装目录进行安装:

./configure
make
sudo make install

sudo apt-get install libusb-1.0-0

然后下载binutils: http://ftp.gnu.org/gnu/binutils/ 配置它:

./configure --target=avr --program-prefix="avr-"

然后制作并安装它。 然后,从以下位置下载最新版本的GCC: http://gcc.gnu.org/mirrors.html。 尝试安装后出现错误,说我需要gmp,mpfr和mpc,所以我下载了它们 这些网站的顺序如下:

https://gmplib.org/

https://www.mpfr.org/mpfr-current/

https://ftp.gnu.org/gnu/mpc/

并使用

安装它们
./configure
make
sudo make install

在Ubuntu终端中。

幸运的是,此后,gcc成功安装。 然后,您需要从以下位置安装avr-libc: http://download.savannah.gnu.org/releases/avr-libc/

和avrdude访问物理板: http://download.savannah.gnu.org/releases/avrdude/

使用

./configure --enable-linuxgpio 
在avrdude上按

以启用通用输入/输出(并在avrdude.conf中设置引脚复位,sck,mosi和味o)。 Avrdude(最后)检查您是否具有libelf,libftdi1,libftdi和libhid

从以下位置下载libelf https://web.archive.org/web/20160430090619/http://www.mr511.de/software/libelf-0.8.3.tar.gz

sudo apt-get update -y
sudo apt-get install -y libelf-dev

ftdi(用于ftdi芯片和usb到ft的ft芯片)是可选的,您可以从intra2net获得它,或使用以下命令:

sudo apt-get update -y
sudo apt-get install -y libftdi1-dev
sudo apt-get install -y libftdi-dev

最后是libhid(人机界面设备):

sudo apt-get install libhidapi-dev

由于某种奇怪的原因甚至无法检测到。

您可能不需要执行所有这些步骤。您可以尝试仅安装AVR以达到最低要求,但是为了安全起见,建议您执行其他步骤。

在编译AVR程序时(如果使用IDE的代码,则将Arduino IDE库编译为一个库),则需要使用g ++,而不是gcc。 这是一些使用Arduino编译简单程序的代码和说明:

//After calling it ardcpp.cpp, I compiled this and got it working for Arduino Uno (atmega328p) in Linux Terminal with the following 3 commands:
//avr-g++ ardcpp.cpp -O1 -Os -Wall -DF_CPU=16000000L -mmcu=atmega328p -I/snap/arduino/41/hardware/arduino/avr/cores/arduino -I/snap/arduino/41/hardware/tools/avr/avr/include/ -I/snap/arduino/41/hardware/arduino/avr/variants/circuitplay32u4 -I/usr/include/ -o ardcpp.bin
//avr-objcopy -j .text -j .data -O ihex ardcpp.bin ardcpp.hex
//avrdude -c arduino -P /dev/ttyUSB0 -p m328p -U flash:w:ardcpp.hex

#include <avr/io.h>
#include <util/delay.h>
//#include <Arduino.h>

int main (void) {
    DDRB |= _BV(DDB4);//data direction register sets 4th bit as output (pin 12)
    //0 thru 7 bits equal pins 8 thru 13, GND, and AREF on Arduino (SDA, and SCL for input from devices such as a gyroscope or a pressure/temperature/humidity sensor are not in PORTB, so use I2C/TWI for them)
    while(1) {
      //4=12,5=13
      PORTB |= (1<<4);//Set pin 12 to HIGH/ON
      _delay_ms(50);//wait 50 ms
      PORTB &= ~(1<<4);//Set pin 12 to LOW/OFF
      _delay_ms(50);//wait 50 ms
    }
}

'