设置树莓派的开发环境

Setting up development environment for Raspberry Pi

本文关键字:开发 环境 设置      更新时间:2023-10-16

最近出于好奇,我决定加入小型机的"潮流"。我买了一对树莓派和BeagleBoard,因为它们都很便宜,我无法抗拒:)但这就是我的问题开始。当然,在购买这些设备之前,我就已经有了一个想法(主机应用)。我把它们安装在我的路由器上,这样它们就可以访问"安装"RPi的raspbian和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要求非常繁琐。我花了几天时间才进入那个东西,我仍然不满意它,习惯于在窗口下简单的F5来获得构建+运行调试,所有这些都以我想要的方式开始。

不管怎样,一开始一切都很顺利,遵循c++ 11的"标准",并在linux下为它添加了适当的标志,然后一些奇怪的错误开始出现,我甚至不能编译SQLite,而这个东西在windows/visual studio下运行得很好。经过几天的反复试验,我放弃了,我来这里寻求建议

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

欢迎任何提示、指南链接、书籍。虽然英语不是我母亲的语言,但我不介意用英语阅读书籍/文章。

提前感谢!

p。S:我把项目放在u盘里随身携带。

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


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


现在Raspbian的问题是它没有使用Debian的armel/armhf架构,而是介于两者之间(硬浮动ARMv6,而armel用于软浮动ARMv5, armhf用于硬浮动ARMv7)。所以你不能使用标准的emdebian交叉工具链和xapt来交叉编译。

有一个官方的树bian跨工具链,你可能想读一下那个教程(但是我想你应该忘记Eclipse,它是多余的,任何像kategedit这样的文本编辑器对于小项目来说都不会那么混乱)。


我发现Makefile要求非常乏味

您可以使用autotools来生成configure, Makefile等,这将比自己编写裸Makefile容易得多。如见。本教程。


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

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


最后但并非最不重要的是,我没有冒犯的意思(我也经历过;)),但由于你是一个Windows开发人员,对如何在Linux上开发几乎没有经验,我最好的建议是现在放弃整个交叉编译的东西,直到你真正习惯Linux开发。Linux开发一开始会让人困惑,交叉编译一开始也会让人困惑,没有必要同时处理这两个问题。

一件简单的事情是把你的工具链和代码放在目标机器上(RPi/Beagle),通过SSHFS/whatever挂载你的源目录,这样你就可以在你的主机上轻松地编辑它,并在SSH会话中编译。你甚至不需要物理上的目标盒子,只要你能通过网络/互联网到达它(假设它是正确保护的)。

祝你好运!

你的构建过程是非常复杂的,所以不要指望任何简单的解决方案。您正在尝试使用多个操作系统、编译器和目标体系结构。CMake是为了帮助处理这类事情而创建的,但它是而不是一个简单的解决方案。我认为没有。