3

问题

我们正在尝试在树莓派上编译 spi_slave 代码。我们使用了本地 gcc 编译器,编译运行没有任何错误。

问题是当我尝试运行输出时:

/home/pi/spi_slave# ./build/output.elf 分段错误

/home/pi/spi_slave# ./build/kernel.img bash: ./build/kernel.img: 无法执行二进制文件

试图从 cambridge 下载 arm-none-eabi 编译器,但它不会运行:/home/pi/spi_slave# ../arm-2008q3/bin/arm-none-eabi-gcc bash: ../arm-2008q3/bin /arm-none-eabi-gcc: 无法执行二进制文件

源代码

我们试图编译的代码是:http ://tylernichols.me/wp-content/uploads/2012/11/raspberry_pi_bare_metal_spi_slave.zip

我们所做的唯一更改是在 makefile 中,在 ARMGNU var 前面添加了一个 #

#ARMGNU = arm-none-eabi

环境

# uname -a
Linux raspberrypi 3.6.11+ #371 PREEMPT Thu Feb 7 16:31:35 GMT 2013 armv6l GNU/Linux

我究竟做错了什么?

我们已经尝试在谷歌和 stackoverflow 上寻找答案几个小时了,但都没有成功。:/

4

1 回答 1

2

arm-none-eabi是一个非linux编译器。它适用于裸机应用。不同之处在于C图书馆。但是,与正常编译的库gcc密切相关。C

然后是代码。它不是为 Linux 编写的。它是为裸机应用程序编写的。您需要在没有 Linux 的情况下从 Raspberry-Pi 引导加载程序(berryboot?)加载和运行代码。

您可以使用 ARM Linux 编译器为裸机应用程序创建代码。但是,您可能更容易找到针对 Raspberry Pi的newlib编译器。您可以在网上搜索一个尝试自己构建一个。

请参阅:如何gcc为 Raspberry PiBare-metal gcc构建。

于 2013-03-04T22:04:14.883 回答