为Raspberry Pi设置开发环境

时间:2013-05-15 12:43:19

标签: c++ development-environment raspberry-pi beagleboard

最近我决定出于好奇而跳上小型机“赶时髦”。我买了一对Raspberry Pi和BeagleBoard因为它们都很便宜我无法抗拒:)但这里是我的问题开始的地方。在我购买它们之前,我对这些设备有了一个想法(控制台应用程序)。我把它们设置到我的路由器上,这样它们就可以被“安装”用于RPI和用于BeagleBoard的ubuntu手臂,并安装,这是我头痛的地方。

我在我的笔记本电脑上安装了Ubuntu 13.04(双引导),以便我可以访问ARM编译器。在我继续前进之前,我必须告诉你我主要在Windows环境中开发,但由于我的系统管理员背景,我对linux很熟悉。无论如何,因为我没有太多的空闲时间,因为我喜欢见到朋友和家人,我喜欢能够修改我的源代码并在Windows(Visual Studio Ultimate 2012)下工作时我感到自由或者我需要放松一下,在笔记本电脑上的Ubuntu下,当我真正找到时间时,我想在我的笔记本电脑上编写一个简单的程序来编译ARM并将二进制文件发送到RPi和BeagleBoard(即使是手动)以及在Windows和Linux上编译x86以便我可以调试我的代码。

我读到了其他人是如何做到的,我使用Eclipse CDT作为我的linux IDE +编译器(g ++ / gdb)和Windows下的Visual Studio。制作了我自己的目录结构,但我发现Makefile的要求非常繁琐。我花了几天才进入那个东西,我仍然不满意它,习惯于在Windows下使用简单的F5来获得Build + Run Debug,所有这些都按照我想要的方式结构良好。

一开始一切顺利,遵循C ++ 11“标准”并在linux下为它添加适当的标志,然后一些奇怪的错误开始出现,我甚至无法编译SQLite在windows / visual studio下完美运行。经过几天的反复试验,我放弃了,我来到这里,征求意见

你们这些人,RPi / BeagleBoard粉丝如何使用这些计算机,你们如何设置多OS /多Arch环境进行调试和编译?我发现我正在考虑使用Java这一点非常困难,所以我可以让我的想法运行:< 。一种方法是将所有库和编译器都放在设备本身并随身携带它也没有问题但它确实感觉有点中世纪,毕竟我所拥有的SD卡尺寸非常有限,它们上面有操作系统。

任何提示,指南链接,书籍都非常受欢迎。虽然英语不是我母亲的舌头,但我不介意阅读其中的书籍/文章。

提前致谢!

P.S:我用拇指驱动器进行项目。

2 个答案:

答案 0 :(得分:3)

首先,我不打算能够从Windows主机对linux-armlinux-x86目标进行交叉编译,因此我的其余建议仅适用于您的Ubuntu盒。 / p>


关于BeagleBoard上的Ubuntu for ARM,只要它使用Debian armel/armhf架构之一,就可以安装emdebian交叉工具链和xapt。有很多简短易学的教程,选择你想要的。


现在Raspbian的问题在于它不使用Debian的常用armel/armhf架构,而是在中间的某个地方(硬浮动ARMv6,而armel用于软浮动ARMv5和armhf用于硬浮动ARMv7)。因此,您无法使用标准emdebian交叉工具链和xapt来交叉编译Raspbian。

虽然有一个官方的Raspbian交叉工具链,你可能想要read that tutorial(但恕我直言,你应该忘记Eclipse,它有点矫枉过正,任何文本编辑器如kategedit都会对小型项目来说要少得多。)


  

我发现Makefile要求非常繁琐

您可以使用 autotools 生成configureMakefile等,这比自己写一个裸Makefile容易得多。见例如。 this tutorial


  

将二进制文件发送到RPi和BeagleBoard

两个词:SSH / SCP。是的,您可以轻松编写脚本并使其成为构建过程的一部分。


最后但并非最不重要,我的意思是没有冒犯(我也经历过这种情况;))但是因为你是一个Windows开发人员,对于如何在Linux上开发几乎没有经验,我最好的建议是放弃整个现在交叉编译的东西,直到你真的习惯了Linux开发。 Linux开发起初很混乱,交叉编译起初也很混乱,不需要同时处理这两者。

一件简单的事情就是在目标框(RPi / Beagle)上放置工具链和代码,通过SSHFS安装源目录,以便可以从主机轻松编辑它,并在SSH中编译会话。只要您可以通过网络/互联网访问它(假设它是正确安全的),您甚至不需要物理上可用的目标盒。

祝你好运!

答案 1 :(得分:2)

您的构建过程非常复杂,因此不要指望任何简单的解决方案。您正在尝试使用多个操作系统和编译器以及目标体系结构。创建CMake是为了帮助解决这类问题,但 是一个简单的解决方案。我不认为有一个。