Windows下建立第一个树莓派应用程序-交叉编译

引言

摸索了几天树莓派,基本对其有了一个基本而肤浅的了解,前面已经实现了在Windows下对树莓派进行远程桌面连接,因此我已经迫不及待的希望开始对其进行应用开发了,我牢记着自己的目标,是要在上面实现一个全是C代码的工程,而不是纯粹来玩这么一个小型的电脑,因此相同功能的实现方法我似乎没有太多的选择,我的选择只有一个,就是在上面运行一个C语言的工程。

因此,如何开发在树莓派上运行的C程序,以及用什么IDE(集成开发环境)开发,在什么个系统下开发成了核心的几个问题。

树莓派基础

Raspbian系统

Raspbian是基于Debian Linux的一个系统,因此我理解它就是一个基于Linux的系统,只是针对树莓派这个平台做了相应的优化和修改。Raspbian又分Raspbian Wheezy和Raspbian Jessie两个版本,原因是它们基于的Debian的版本不同,Raspbian Wheezy基于Debian Wheezy,Raspbian Jessie基于Debian Jessie,现在较新的是基于Debian Jessie的Raspbian Jessie系统,我现在的树莓派安装就是这个系统,是3-18号以后的版本。因此我的理解是Linux衍生出了Debian Jessie,Debian Jessie又衍生出了Raspbian Jessie。因此我觉得开发在Raspbian Jessie上运行的应用程序实际上是开发在Linux上运行的应用程序,但很遗憾,我还未曾正式接触过Linux,因此即使弄清楚了这个关系,我也还是从0开始。

目前的开发现状

这几天我不断的在Google树莓派开发的资料,我发现普遍使用的是C语言和Python语言,而这两者中Python又似乎占比比较大,这对我而言似乎不是一个好消息,因为我的代码是C的,而且Python关键我也不会。但也不是很糟,起码C语言用了这么多年还是可以继续用的。因此我又着重看了在不少在用C语言开发树莓派程序的资料,或许是我搜索的关键字还不对,我发现他们的教程里面基本都是在树莓派本身的系统下直接在编写一个C源文件,然后通过终端使用相关指令编译运行。这显然不适合我,如果是只有一个c文件的工程,且这个文件只有十几行代码,我还可以接受,可我的是一个包含几十个c文件的大工程,我如何进行有序的管理?虽然我不是一个程序员,但也写过不代码,这些代码都是在有良好的交互界面IDE下开发的,例如VC6.0,Keil,IAR等,让我突然脱离IDE我很能办到。

因此我的目标又进一步明确,我必须要使用C语言,需要一个IDE的开发环境,且是在Windows平台下开发。

交叉编译

想在Windows下开发Linux上运行的程序,就需要引入交叉编译的概念,交叉编译就是在一个平台使用交叉编译工具编译出可以在另外一个平台上运行的可执行程序。而树莓派的Raspbian系统本身已经自带集成了Linux的编译器,因此它本身就是大开发环境,所以它才能直接在终端调用指令编译.c的源文件。因此实际上有两种方法在windows下开发,一种是将代码在Windows下写好以后,copy到树莓派中,由树莓派使用自身的编译工具进行编译链接生成可执行文件;另一种则是在Windows下使用交叉编译工具直接编译生成可以在树莓派上运行的可执行文件。显然第二种更符合我的需求。

VisualGDB工具

VisualGDB是一个为Windows上的Visual Studio准备的插件,目前支持Visual Studio 2008~2017,有了这款插件,Visual Studio便可以开发linux程序了。它实际上是在Visual Studio中帮你配置好交叉编译的工具,并且它还可以帮你使用SSH远程连接上你的树莓派。

环境搭建步骤

根据树莓派的系统选择合适的最新的编译工具链,并下载安装。

所有安装完成后,打开Visual Studio中会多出VisualGDB的东西,例如帮助菜单下,多了一项 About VisualGDB:

建立第一个工程

打开VS,文件/新建/项目

左侧选择VisualGDB,中间选择Linux Project Wizard,下方配置工程名及工程存放目录

接下来,选择创建Application(executable file)/Use MSBuild,点next,其它几个我目前也还不知道是个什么意思

接下来便出现了两种选择:

这实际上就是前面提到的两种方案,第一种是只在Windows管理工程,编写代码,源文件通过网络传送到Linux的电脑上进行编译,第二种是使用交叉编译工具在在本地进行编译,然后将生产的可执行文件通过网络传送到Linux电脑上进行运行。不管是选择哪一种,此时,请将你的树莓派上电运行,并确保它与我们的电脑处于同一局域网中,并清楚它的IP地址,还需要确保树莓派的SSH处于默认开启状态,因为马上要使用SSH进行远程登录链接了。

下面是选择第一种方案时:

这种情况,你需要填入树莓派的IP地址,然后配置好登录的用户名和密码即可,用户名和密码跟前一篇文章中提到的远程桌面的登陆用户名和密码一样的。此时应该会自动获取树莓派的工具链信息,之前也提到树莓派的系统本身已经相当于一个大的编译环境了,选择这种情况的话,实际上你并不需要安装前面步骤中提到的交叉工具链,因为代码是传到树莓派中在远程编译链接的。

这是选择第二种方案

这种方案必须使用交叉编译工具链,由于前面安装了,这里会自动检测到,选择一下即可。特别说明的是,如果你在没有安装交叉编译工具链的情况下到了这个步骤,VisualGDB会帮你下载安装,但是非常慢且下载失败会全部重新下,因此建议按照我前面说的方法直接去下载交叉工具链,用迅雷下载快,然后自行安装。下面这个截图就是我亲自走的弯路,下载了三个小时竟然又从头开始下载了。

然后同样配置SSH连接,同时可以看到选择Deployment folder,这个目录是交叉编译好的树莓派上可直接执行的文件传到树莓派上存放的地方,可以记下来路径:/tmp,待会去看看。

这里我选择的是第二种方案。

Windows下编译调试

在工程默认创建的cpp文件中输入如下代码:

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <stdio.h>
using namespace std;

int main(int argc, char *argv[])
{
	char sz[] = "Hello, World! by launcher";	//Hover mouse over "sz" while debugging to see its contents
	cout << sz << endl;	//<================= Put a breakpoint here
	getchar();
	return 0;
}

根据提示,设下一个断点:

点击Debug按钮:

此时程序启动,并停留在断点处,选择右下方的输出标签进行查看观察输出信息:

F10单步执行,即可看到程序输出信息

树莓派中查看和验证可执行程序

前面Windows下的调试真的是运行在树莓派中的吗,太过方便反而觉得有点忐忑,所以通过远程桌面直接查看树莓派中的程序,还记得前面提到的Deployment folder文件夹/tmp,打开目录看看

果然在该目录下发现了这个可执行文件,双击打开,选择在终端模拟器中执行

可以发现,程序确实与我们写的代码期望结果相同:

小结

在Windows下使用VS开发树莓派(Linux)的程序是可以的,需要安装VisualGDB插件,并安装对应树莓派的交叉编译工具链,这样就能使用我们熟悉的VS这个IDE进行树莓派程序的开发和调试了,非常方便高效,本文的一小步在我心里是一大步,虽然只是简单建立一个Hello Word工程,但感觉后续的研究学习有了崭新的开始。

由于作者知识水平的局限,如有理解错误的地方,请批评指正。

文章来源:Windows下建立第一个树莓派应用程序 | ETRD

参考文献

Raspbian Jessie is here - Raspberry Pi

VisualGDB - Download

Prebuilt GNU toolchain for Raspberry Pi

Using a Cross-compiler for Raspberry PI – VisualGDB Tutorials

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Windows交叉编译Qt 5.14.2至树莓派平台,需要进行以下步骤: 1. 安装交叉编译工具链 在Windows上安装树莓派交叉编译工具链,可以使用Raspberry Pi官方提供的工具链,也可以使用其他第三方提供的工具链。 2. 下载Qt源代码 在Qt官网上下载Qt源代码,选择Qt 5.14.2版本。 3. 配置Qt交叉编译环境 使用命令行进入Qt源代码目录,执行以下命令: ``` ./configure -platform win32-g++ -xplatform linux-arm-gnueabihf-g++ -release -opengl es2 -device linux-rasp-pi3-g++ -device-option CROSS_COMPILE=<path-to-cross-compiler> -sysroot <path-to-sysroot> ``` 其中,`<path-to-cross-compiler>`为交叉编译工具链的路径,`<path-to-sysroot>`为树莓派系统根目录的路径。 4. 编译Qt库 执行以下命令,开始编译Qt库: ``` make -j4 ``` 其中,`-j4`表示使用4个线程编译。 5. 安装Qt库 执行以下命令,安装Qt库到树莓派系统中: ``` make install ``` 6. 运行Qt应用程序 将编译好的Qt应用程序拷贝到树莓派系统中,执行以下命令运行: ``` ./myapp -platform eglfs ``` 其中,`myapp`为Qt应用程序的可执行文件名,`-platform eglfs`表示使用EGLFS平台插件。 QEMU模拟树莓派的步骤如下: 1. 安装QEMU 在Windows上安装QEMU,可以从官网上下载安装包进行安装。 2. 下载树莓派系统镜像 从树莓派官网上下载树莓派系统镜像,选择适合的版本。 3. 启动QEMU模拟器 使用以下命令启动QEMU模拟器: ``` qemu-system-arm -M raspi2 -kernel <path-to-kernel> -dtb <path-to-dtb> -sd <path-to-sdcard-image> -append "root=/dev/mmcblk0p2 rootfstype=ext4 rw" -net nic -net user,hostfwd=tcp::5022-:22 -no-reboot ``` 其中,`<path-to-kernel>`为内核镜像文件的路径,`<path-to-dtb>`为设备树文件的路径,`<path-to-sdcard-image>`为SD卡镜像文件的路径。 4. 连接到QEMU模拟器 使用ssh连接到QEMU模拟器: ``` ssh -p 5022 pi@localhost ``` 其中,`-p 5022`表示连接的SSH端口号,`pi`为登录用户名。 5. 安装Qt库 在QEMU模拟器上安装Qt库,可以按照上述步骤进行。 ### 回答2: 要在Windows交叉编译Qt 5.14.2至树莓派平台,需要安装一些必要的工具和设置适当的环境。 首先,我们需要安装MinGW交叉编译工具链。你可以从MinGW官方网站下载MinGW安装包,并按照指示进行安装。在安装过程中,确保选择添加MinGW至环境变量,并选择与你的Windows操作系统和位数相对应的版本。 然后,我们需要安装树莓派交叉编译工具链。你可以从树莓派官方网站上下载适用于Windows的工具链。安装过程基本上只需要将工具链解压缩到指定目录即可。 接下来,我们需要下载Qt 5.14.2的源代码。你可以从Qt官方网站下载稳定版本的源代码,然后将其解压缩到一个合适的目录。 在开始编译之前,我们需要设置适当的环境变量。打开命令行终端,使用以下命令设置环境变量: set PATH=%PATH%;<MinGW的bin目录>; <树莓派工具链的bin目录> 接下来,我们需要使用命令行终端进入Qt源代码所在的目录,然后执行以下命令: configure -prefix <树莓派交叉编译工具链的目录>/sysroot/opt/qt5 make make install 这些命令将配置、编译和安装Qt到树莓派交叉编译工具链的目录。 完成上述步骤后,你就成功地将Qt 5.14.2交叉编译树莓派平台了。你可以将编译好的Qt文件复制到树莓派上,并在树莓派上使用Qt开发应用程序了。 ### 回答3: 在Windows交叉编译Qt 5.14.2至树莓派平台,我们需要准备以下工具和环境: 1. 下载并安装树莓派交叉编译工具链:首先,我们需要下载树莓派交叉编译工具链。可以从树莓派官方网站上获取适合你的树莓派版本的工具链,并进行安装。 2. 下载并安装Qt 5.14.2开发环境:从Qt官方网站上下载并安装Qt 5.14.2版本的开发工具。 3. 配置Qt交叉编译工具链:打开Qt的安装目录,找到Qt安装目录下的mkspecs文件夹。在该文件夹下可以找到一个名为"linux-rasp-pi-g++"(或者类似的)的文件夹。复制该文件夹,重命名为"linux-rasp-pi-g++-cross"(或者其他你喜欢的名称)。 4. 修改交叉编译工具链配置文件:打开刚刚复制并重命名的文件夹,找到qmake.conf文件。使用文本编辑器打开该文件,修改以下两行: ``` QMAKE_CC = <你的交叉编译器路径>/arm-linux-gnueabihf-gcc QMAKE_CXX = <你的交叉编译器路径>/arm-linux-gnueabihf-g++ ``` 将<你的交叉编译器路径>替换为你的交叉编译工具链的路径。 5. 配置Qt工具链选项:打开Qt Creator,进入"工具->选项"菜单,选择"构建和运行->工具链"选项。点击"添加"按钮,选择"GCC"类型。在弹出的对话框中,设置名称为"树莓派交叉编译工具链"(或者你喜欢的名称),设置路径为你的交叉编译工具链的路径。 注意:如果在上一步骤中没有复制并重命名文件夹,你也可以直接选择刚刚复制的文件夹作为工具链路径。 6. 创建一个Qt项目并配置交叉编译工具链:打开Qt Creator,点击"新建项目->Qt Widgets应用"并按照提示创建一个新的项目。在项目设置中,选择"树莓派交叉编译工具链"作为构建套件。 7. 构建和部署:在Qt Creator中,点击"构建->构建项目",等待编译完成。然后,点击"构建->部署",将生成的二进制文件和相关的Qt库文件复制到树莓派上。 完成以上步骤后,你就成功在Windows交叉编译Qt 5.14.2至树莓派平台。请注意,这只是一个简单的指南,具体操作可能因个人电脑和系统配置而有所不同。如果遇到问题,建议查阅相关文档或寻求进一步的帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值