该项目演示了利用 Ubuntu 22.04 主机系统上轻量与多功能图形库(LVGL)的 C/C++ 应用成功交叉编译,部署到运行 Raspberry Pi OS(Legacy)Lite(目标)的 Raspberry Pi Zero W(目标)上,该系统是一个为资源有限设备优化的 32 位操作系统。该应用在 ELECROW 10.1 英寸 HDMI 电容触摸 IPS 显示屏上提供了响应式图形用户界面(GUI)。它配备了 1280×800 分辨率的 LCD 和触摸屏,支持无需任何驱动程序的即插即用功能。
交叉编译是指在PC(主机)上编译代码,通常是Linux PC,以生成适用于不同硬件(目标)的可执行程序,例如树莓派Zero。目标通常具有不同的硬件和软件特性,例如不同的处理器架构或操作系统。
当目标硬件缺乏资源、工具或环境直接编译代码时,如嵌入式系统、移动设备或物联网设备或游戏主机等专用平台,这种方法常常是必需的。通过交叉编译,开发者可以利用主机系统的强大资源,高效地为目标硬件构建应用。
如果你用的是Windows PC(大多数用户都是这样),建议用VMware Workstation(免费)安装Ubuntu 20或Ubuntu 221或者WSL(我更喜欢用VMware)。图1展示了运行Ubuntu 64的VMware环境。
在 Linux 命令提示符中执行以下命令以安装关键包:
Sudo APT更新
Sudo apt install libc6-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev build-essential bison flex libssl-dev bc
然后,执行以下命令:
Sudo apt install GCC-arm-Linux-gnueabi G++-arm-Linux-gnueabi
现在,主持人准备整理我们的第一个节目。
树莓派零W(图2)是一款由树莓派基金会开发的紧凑但性能强大的单板计算机,专为空间有限的项目设计,如物联网设备、机器人技术和复古游戏。尺寸仅为65mm x 30mm x 5mm,搭载1GHz单核ARM11处理器(Broadcom BCM2835)和512MB内存,性能适中但性能强大。
与原版Pi Zero不同,Zero W内置802.11b/g/n Wi-Fi和蓝牙4.1,非常适合无需外接接收器的无线应用。它提供microSD卡插槽用于存储,mini-HDMI接口用于1080p视频输出,micro-USB用于数据,一个独立的micro-USB供电,以及一个未填充的40针GPIO接口,用于连接传感器、LED或其他硬件。CSI 摄像头连接器支持树莓派摄像头,配备专用线缆。虽然其单核CPU和单个micro-USB数据端口限制了其在重度多任务或桌面应用中的应用,但其低功耗(120mA至370mA)及与树莓派操作系统的兼容性使其适合轻量级嵌入式项目。建议使用USB集线器、mini-HDMI适配器和5V、2.5A电源等配件,以释放其全部潜力。
下载树莓派操作系统(Legacy)Lite1. 截至今天,最新发布的版本是在6日th2025年5月。我建议用“树莓派成像器”在microSD卡上安装操作系统2. 把MicroSD卡插入读卡器,连接到你的电脑。别忘了检查和/或输入主机名、用户名/密码和SSH的默认值。
图3显示了我偏好的配置。你可以自由设置你想要的主机名、用户名和密码。我建议使用高质量且高速的MicroSD卡,比如32GB的SanDisk Micro SDHC Class 10 Ultra,或类似品牌。
我用的是ELCROW的10.1英寸IPS HDMI LCD屏幕3。 分辨率是1280×800。液晶面板配备电容触摸屏,适用于各种嵌入式应用(见图4)。你可以用普通的HDMI显示器,但紧凑的触摸屏屏幕就更复杂了。

将MicroSD卡插入读卡器,插入Ubuntu机器(见图5)。进入“bootfs”硬盘,打开“config.txt”文件。将以下文字复制粘贴到“config.txt”文件中(图6)。你的显示器现在已经准备好支持1280*800分辨率了。
max_usb_current=1
hdmi_force_hotplug=1
config_hdmi_boost=7
hdmi_group=2
hdmi_mode=87
hdmi_drive=1
display_rotate=0
hdmi_cvt 1280 800 60 6 0 0 0 0
要在Linux中编译代码,你应该准备一个Makefile并引入交叉编译器4(图7)编译器是“arm-linux-gnueabi-gcc”,但为什么?
“arm-linux-gnueabi-gcc”工具链是树莓派 Zero-W 的稳健选择,因为它支持 ARMv6 架构。与针对ARMv7且与Zero W的ARMv6不兼容的“arm-linux-gnueabihf-gcc”不同,该编译器确保了正确的指令集兼容性。
图8展示了“main.c”文件4.右键点击屏幕,选择“在终端中打开”。在命令提示符中输入“make”。编译器生成一些消息并生成输出文件(见图9)。终于,我们的应用程序准备好了(你可以重新命名)。
如果你的MicroSD卡还连接着Ubuntu,打开“rootfs”硬盘(见图10),把“myGUI”文件复制到根文件夹(见图11)。你完成了。
树莓派 Zero-W 仅提供一个数据(非电源)micro-USB 端口,该端口由 LCD 触摸屏使用。不过,这块板子是连接到本地WiFi网络的(你还记得树莓派成像器吗?)。这个WiFi连接让我们可以使用SSH并访问命令提示符。
我这边的板子IP地址是:192.168.100.40。你的RP板的IP地址很可能不同。你可以用无线网络检测连接设备的信息,找到你RP板的IP地址,或者使用以下命令:
主机名 -I
因此,你可以使用SSH客户端(如Bitvise SSH客户端)连接到你的主板,并用用户名和密码登录。在命令提示符中,执行此命令将打开我们的图形界面应用程序:
sudo /root/myGUI
图12显示了运行该应用程序的LCD。如果遇到执行权限错误,你可以用命令提示符(用“chmod”命令)修改文件权限设置,或者把你的micro-SD卡插入Ubuntu,直观地修改myGUI权限。
1 树莓派操作系统镜像
2 树莓派成像仪
3 ELECROW 10.1英寸显示屏
4 源代码