0

最近,出于好奇,我决定加入小型机“潮流”。我买了一对 Raspberry Pi 和 BeagleBoard,因为它们都很便宜,我无法抗拒 :) 但这就是我的问题开始的地方。当然,在购买这些设备之前,我对这些设备有一个想法(控制台应用程序)。我将它们设置到我的路由器上,以便它们可以访问“已安装”的 RPi raspbian 和 BeagleBoard 的 ubuntu arm 并安装,这就是我头痛的地方。

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

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

无论如何,一开始一切都很顺利,遵循 C++11“标准”并在 linux 下为其添加适当的标志,然后开始出现一些奇怪的错误,我什至无法编译 SQLite,而这东西已经完美运行窗户/视觉工作室。经过几天的反复试验,我放弃了,我来到这里,寻求建议

你们这些 RPi/BeagleBoard 爱好者如何使用这些计算机,如何设置多操作系统/多架构环境进行调试和编译?我发现我正在考虑使用 Java 只是为了让我的想法运行起来非常困难 :< 。一种方法是在设备本身上安装所有库和编译器并随身携带,这也没有问题,但它确实感觉有点中世纪,毕竟我拥有的所有 SD 卡的大小都非常有限,上面有操作系统.

任何提示、指南链接、书籍都非常受欢迎。即使英语不是我的母语,我也不介意阅读其中的书籍/文章。

提前致谢!

PS:我把这个项目放在拇指驱动器里。

4

2 回答 2

3

首先,我不会打赌能够从 Windows 主机交叉编译linux-armlinux-x86目标,所以我的其余建议仅适用于您的 Ubuntu 机器。


关于 BeagleBoard 上的 Ubuntu for ARM,只要它使用其中一种 Debianarmel/armhf架构,您就可以安装一个emdebian跨工具链以及xapt. 那里有很多简短而简单的教程,选择你想要的。


现在 Raspbian 的问题在于它不使用armel/armhfDebian 的常用架构,而是处于中间位置(硬浮点 ARMv6,而armel用于软浮点 ARMv5 和armhf硬浮点 ARMv7)。所以你不能使用标准的emdebian交叉工具链xapt来交叉编译 Raspbian。

虽然有一个官方的 Raspbian 跨工具链,但您可能想阅读该教程(但恕我直言,您应该忘记 Eclipse,它是矫枉过正的,任何文本编辑器都喜欢kategedit不会对小型项目造成混淆)。


我发现 Makefile 要求非常乏味

你可以使用autotools来生成configureMakefile,这比自己写一个bare要容易得多Makefile。参见例如。本教程


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

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


最后但同样重要的是,我无意冒犯(我也经历过;))但是由于您是 Windows 开发人员,对如何在 Linux 上进行开发几乎没有经验,我最好的建议是放弃整个交叉编译暂时的东西,直到你真正习惯了 Linux 开发。Linux开发一开始比较迷茫,交叉编译一开始也比较迷茫,没必要同时处理。

一个简单的做法是将你的工具链和代码放在目标框(RPi/Beagle)上,通过 SSHFS/其他方式挂载你的源目录,这样你就可以从你的主机上轻松地编辑它,并在 SSH 会话中编译。只要您可以通过网络/互联网访问它(假设它得到正确保护),您甚至不需要物理上可用的目标框。

祝你好运!

于 2013-05-15T14:33:47.140 回答
2

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

于 2013-05-15T13:05:33.227 回答