树莓派2B,Qt5.8交叉编译移植。

本文详细介绍Qt5.8在树莓派2B上的移植过程,包括环境搭建、工具链配置、编译安装及QtCreator配置等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发板: 树莓派2B
PC机环境: Ubuntu 14.04 LTS
参考官方文档: https://wiki.qt.io/Raspberry_Pi_Beginners_Guide
写本文的目的: 与大家分享自己的移植过程和一些心得,如有不当之处,请大家指出!

  1. 创建目录opt,方便管理所需要的工具资料。**
    mkdir ~/opt cd ~/opt
    在/mnt目录下创建 rasp-pi-rootfs目录,用来挂载系统镜像
    sudo mkdir /mnt/rasp-pi-rootfs

  2. 获取系统镜像,可以使用官方最新镜像,输入命令:
    wget http://downloads.raspberrypi.org/raspbian_latest,这里我使用的是开发板自带的系统镜像
    这里写图片描述

  3. 将系统镜像挂载到我们之前创建的目录:
    sudo mount -o loop,offset=62914560 RPI_2B_B_B+_7.0_cap_usb_touch_RASPBIAN_20150405.img /mnt/rasp-pi-rootfs
    关于offset的计算:
    使用命令查看:
    我们看到了两个image,第一个相当于bootloader,从第二个开始计算,从start的位置。
    offset = 512 * 122880

  4. 交叉编译工具
    找与Qt版本对应的gcc! 找与Qt版本对应的gcc! 找与Qt版本对应的gcc!重要的事情说3遍, 可以通过官方网站查看
    https://doc.qt.io/qt-5/supported-platforms-and-configurations.html
    这里写图片描述

    因此,我们至少得用GCC4.8.2,低于该版本的话编译的时候会报各种各样的错误。我们采用的是arm-linux-gnueabihf-gcc-4.8.3 ,
    使用官方介绍文档里的工具会报错误,百度google了一圈才找到自己能用的。
    cross-compile-tools arm-linux-gnueabihf-gcc-4.8.3 arm-linux-gnueabihf-gcc-4.8.3下载地址:链接:http://pan.baidu.com/s/1bprK2bt 密码:6gbb gcc4.8在 tools-master里
    这里写图片描述在tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin 下
    这里写图片描述
    因为上面的交叉编译工具是32位Linux的,如果你所使用的是64位Linux的话,还需要安装32位的运行库软件包:sudo apt-get install ia32-libs
    这里写图片描述
    下载出错,但是有提示我们可以使用lib32z1 lib32ncurses5 lib32bz2-1.0来代替,挨个装一遍吧。

  5. 准备qt5源码
    在opt目录下从远程仓库克隆一份qt源码库到本地
    git clone git://code.qt.io/qt/qt5.git
    这里写图片描述
    下载完成后进入qt5目录,运行init-repository,开始下载各个模块源码,这个持续的时间就跟网速有关系了,我的一般20分钟左右。
    这里写图片描述

  6. 运行脚本配置编译
    进入到cross-compile-tools目录内,进行配置
    sudo ./fixQualifiedLibraryPaths /mnt/rasp-pi-rootfs/ ~/opt/tools-master/arm-bcm2708/gcc-linaro-arm-linunx-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc
    这里写图片描述
    但是发现会出错,关于libstdc++.so.6 的问题,网上找了一圈,什么拷贝库啊什么的,都不管用,最后无意间看到百度经验有关于解决该问题的办法,试了下真成功了。直接
    sudo apt-get install lib32stdc++6
    这里写图片描述
    再运行一次脚本,不报错了
    这里写图片描述
    这里写图片描述

然后再进入到qt5目录的qtbase目录进行configure配置。如果需要用到qml,在configure后面加上-make tools
./configure -opengl es2 -device linux-rasp-pi-g++ -device-option CROSS_COMPILE=~/opt/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf- -sysroot /mnt/rasp-pi-rootfs -opensource -confirm-license -optimized-qmake -reduce-exports -release -make libs -make tools -prefix /usr/local/qt5pi
这里写图片描述

配置完成
这里写图片描述

接下来在qtbase目录进行编译安装:
make -j4

-j4允许4个编译命令同时进行,加快编译速度,但是我发现,当编译出错的时候,make -j+n 并不能准确的定位错误的位置,然后单独的make指令就可以。
这一过程持续了8分钟左右(编译时间和电脑配置有很大关系,5-60分钟都有可能,大家耐心等待)
这里写图片描述
编译完成之后 sudo make install 进行安装。

至此我们的编译安装基本完成,如果还需要其它模块,为了防止依赖错误的发生,按照以下顺序进行编译安装。
qtimageformats, qtsvg, qtjsbackend, qtscript, qtxmlpatterns, qtdeclarative, qtsensors, qt3d, qtgraphicaleffects, qtjsondb, qtlocation, qtdocgallery
假如我们要编译qtimageformats模块,执行命令:
cd ~/opt/qt5/qtimageformats
~/opt/qt5/qtimageformats$ /usr/local/qt5pi/bin/qmake

~/opt/qt5/qtimageformats$make -j4

~/opt/qt5/qtimageformats$sudo make install

qt5.8好像没有qtjsbackend 和 qtjsondb模块?编译的时候先跳过吧。

7、烧写系统镜像到树莓派SD卡。

~/opt$ sync; sudo umount /mnt/rasp-pi-rootfs

~/opt$ sudo dd bs=1M if=RPI_2B_B_B+_7.0_cap_usb_touch_RASPBIAN_20150405.img of=/dev/sdb; sync

sdb是我们插入的sd卡,可以在/dev目录下查看自己的是哪一个设备。
这里写图片描述

文件比较大,烧写过程中没有任何提示,耐心等待。
传输完成:
这里写图片描述

8、配置QtCreator
此方法是我们可以直接在pc端编译运行qt程序,在树莓派板子上生成bin文件并显示。因此需要pc和树莓派在同一局域网内。树莓派和pc最好通过路由或者交换机通信,pc和树莓派网线直连我试过并不管用,也懒得改线序了。

工具链设置:
依次点击 Tools -> Options..-> Build & Run -> Compilers ->Add -> GCC ->C++
在”Compiler Path”处选择g++编译器的路径,比如我的是

/home/opt/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-g++
随便给它命名,方便你自己记忆就行。单击 “Apply”
这里写图片描述

Qt Version设置:
Tools -> Options..-> Build & Run -> Qt Versions -> Add 然后选择qmake的路径“/usr/local/qt5pi/bin/qmake”,但是发现会提示错误了
这里写图片描述
原因是,我们之前把img文件卸载了,需要我们重新挂载上,因为交叉编译依赖的是img中的我们移植好的库。挂载完img文件后,重启qtcreator,错误消失:
这里写图片描述
点击“Apply”完成。

设备设置:
Tools -> Options…-> Devices -> Devices -> Add ->Generic Linux Device -> Start Wizard

第一行name,随意命名,方便记忆就行。
第二行Hostname or IP address 是开发板的ip地址
第三行username 树莓派默认pi
第五行password 默认raspberry
这里写图片描述

点击Next -> finshed 成功
这里写图片描述

接下来我们新建一个qt程序
这里写图片描述

然后Projects -> Manage Kits… -> Buil&Run -> Kits -> Add
然后设置如下
这里写图片描述

接下来点击“Debugger”的“Manage”-> Add ,
这里写图片描述

接下来点击”Projects” 在Build & Run下点击Raspberry Pi这里写图片描述

然后运行程序报错:
这里写图片描述

在项目文件.pro中添加这两句
target.path = /home/pi/
INSTALLS += target
成功运行:
这里写图片描述

再来试一个qml的程序:
新建qml程序选上Raspberry Pi
这里写图片描述
这里写图片描述
在项目文件.pro末尾加上
target.path = /home/pi/
成功运行:
这里写图片描述

默认是全屏的。

至此,Qt5.8的移植已基本完成,本人新手,如有错误的地方还望指出。。。!

<think>好的,用户想知道如何将苹果手表S8与荣耀手机配对或连接。首先,我需要确认苹果手表和荣耀手机的兼容性。苹果手表主要设计用于与iPhone配合使用,因此可能无法与安卓手机完全兼容。不过,用户可能还是想尝试连接,或者寻找替代方法。 接下来,我应该检查是否有官方支持。苹果的官方网站明确指出,Apple Watch需要iPhone 6s或更高版本,并安装最新版本的iOS。这说明官方并不支持安卓设备,包括荣耀手机。需要告知用户这一点,避免他们尝试后发现无法连接。 不过,用户可能仍然想尝试一些第三方应用。例如,有一些应用如Wear OS by Google,但Apple Watch运行的是watchOS,与Wear OS不兼容。可能需要使用其他方法,比如通过蓝牙连接部分功能,但通知、应用同步等功能可能无法使用。 另外,用户可能需要了解即使能配对部分功能,也会有很多限制。比如,无法接收通知、无法使用App Store安装应用、健康数据同步可能受限等。这些都需要明确告知用户,让他们了解潜在的问题。 最后,可能需要建议替代方案,比如使用兼容安卓的智能手表,如华为或荣耀自家的产品,以获得更好的体验。同时,确保回答结构清晰,分步骤说明可能的尝试方法,但强调官方不支持,避免用户产生误解。</think>### 苹果手表S8连接荣耀手机的方法及注意事项 #### 一、兼容性分析 1. **官方限制** Apple Watch S8基于watchOS系统开发,**仅支持与iPhone配对**(需iPhone 6s或更新机型,iOS 15及以上系统)[^1]。荣耀手机搭载安卓系统,**官方未提供适配方案**,因此无法通过常规蓝牙配对实现完整功能。 2. **功能局限性** 即使通过第三方工具实现基础连接,以下功能将受限或失效: - 消息通知同步 - 健康数据自动传输(如心率、睡眠监测) - App Store应用下载 - 系统级交互(如Siri、快捷指令) #### 二、尝试性连接步骤(非官方方案) 1. **基础蓝牙配对** - 打开荣耀手机蓝牙设置 → 开启Apple Watch蓝牙 - 双方设备可能识别为“未知设备”,但无法建立有效通信通道 2. **使用第三方工具(有限功能)** 可尝试通过以下应用实现部分数据传输: ```markdown 1. *Wear Link*(需Google Play服务) 2. *Watch Droid*(需Root权限) ``` > 注意:这类工具仅支持基础计步显示,且存在稳定性风险 #### 三、替代方案建议 1. **跨平台智能手表推荐** | 品牌 | 型号 | 安卓兼容性 | 特色功能 | |------------|---------------|------------|------------------------| | 华为 | Watch GT 4 | 完全支持 | 鸿蒙系统、长续航 | | 荣耀 | GS 3 | 完全支持 | 100+运动模式 | | Garmin | Venu 3 | 完全支持 | 专业运动数据分析 | 2. **多设备协同方案** 若必须使用Apple Watch,可搭配二手iPhone作为中转设备: ```mermaid graph LR A[荣耀手机] --云端同步--> B[iPhone备用机] B --蓝牙配对--> C[Apple Watch] C --健康数据--> B ``` #### 四、技术原理说明 Apple Watch采用**私有通信协议**,其蓝牙连接过程包含以下验证环节: $$ Authentication = \text{HMAC-SHA256}(DeviceKey \oplus PairingCode, Nonce) $$ 这种加密机制导致非Apple设备无法通过系统级验证,这也是安卓手机难以兼容的根本原因[^1]。 相关问题
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值