当前位置:首页 > 科技  > 知识百科

使用Docker多阶段多平台编译Qt

来源: 责编: 时间:2023-08-07 16:30:40 275观看
导读 Docker 中的多平台如何工作?
在 Docker 中使用多平台功能的最简单方法是从命令行调用它。使用docker buildx,我们可以利用新的测试版功能。通过运行docker buildx build --pla

Docker 中的多平台如何工作?
在 Docker 中使用多平台功能的最简单方法是从命令行调用它。使用docker buildx,我们可以利用新的测试版功能。通过运行docker buildx build --platform linux/arm/v7 -t arm-build 。此命令使用 ARMv7 仿真根据当前目录中的“Dockerfile”构建 docker 映像。在幕后,Docker 在 QEMU 虚拟化环境(qemu-user-static准确地说)中运行整个 Docker 构建过程。通过这样做,可以消除设置自定义 VM 的复杂性。一旦构建完成,我们甚至可以使用docker runARMv7 模式自动启动容器。mU628资讯网——每日最新资讯28at.com

多平台、多阶段和Qt
虽然多平台功能是一个很棒的独立功能,但与多阶段构建结合使用时它会变得更加强大。在单个 Dockerfile 中,我们能够混合和匹配平台并在步骤之间进行复制。这个功能正是我们最终为 Screenly OSE 使用 Qt 构建过程所做的。mU628资讯网——每日最新资讯28at.com

第一阶段:ARMmU628资讯网——每日最新资讯28at.com

感谢Balena的优秀人员,我们能够在第一阶段使用 Raspbian 基础映像。我们可以使用以下方法调用此步骤:mU628资讯网——每日最新资讯28at.com

FROM --platform=linux/arm/v7 balenalib/rpi-raspbian:buster as builder
在上述步骤之后,我们可以像往常一样使用 Docker 并执行各种RUN命令,例如安装包等。请注意,如果构建不是在 ARMv7 硬件上运行,则此容器正在使用 QEMU 模拟运行。在我们的例子中,我们使用命令来安装 Qt 构建依赖项。上述步骤还允许我们完全消除从磁盘映像(这是Qt Wiki建议的)或rsync物理 Raspberry Pi 的文件复制文件的需要。mU628资讯网——每日最新资讯28at.com

第 2 阶段:x86mU628资讯网——每日最新资讯28at.com

一旦我们在 ARM 步骤中安装了依赖项,我们就可以切换到构建器的原生 x86 架构以避免仿真,并使用以下行进行交叉编译:mU628资讯网——每日最新资讯28at.com

FROM --platform=linux/amd64 debian:buster
现在,我们进入了有趣的部分。切换到 x86 后,我们可以复制上一步中的文件。我们这样做是为了创建一个可用于 Qt 的 sysroot。我们通过运行以下命令来完成此步骤:mU628资讯网——每日最新资讯28at.com

RUN mkdir -p /sysroot/usr /sysroot/opt /sysroot/libmU628资讯网——每日最新资讯28at.com

COPY --from=builder /lib/ /sysroot/lib/mU628资讯网——每日最新资讯28at.com

COPY --from=builder /usr/include/ /sysroot/usr/include/mU628资讯网——每日最新资讯28at.com

COPY --from=builder /usr/lib/ /sysroot/usr/lib/mU628资讯网——每日最新资讯28at.com

COPY --from=builder /opt/vc/ sysroot/opt/vc/
我们现在拥有两全其美的优势。通过利用多步骤和多平台功能,我们生成了一个可用于构建 Qt 的 sysroot。由于我们在上一步中使用了功能齐全的 Raspbian 映像,我们甚至可以让 Qt 获取所有现有的库。mU628资讯网——每日最新资讯28at.com

./configure /
      -sysroot /sysroot
正如我们在介绍中提到的,编译 Qt 远非简单。成功编译它需要很多步骤。mU628资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-119-2501-0.html使用Docker多阶段多平台编译Qt

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: Salesforce联合首席执行官将辞职 贝尼奥夫将再次独掌公司

下一篇: Docker使用缓存编译 Qt

标签:
  • 热门焦点
  • CSS单标签实现转转logo

    转转品牌升级后更新了全新的Logo,今天我们用纯CSS来实现转转的新Logo,为了有一定的挑战性,这里我们只使用一个标签实现,将最大化的使用CSS能力完成Logo的绘制与动画效果。新logo
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • 虚拟键盘 API 的妙用

    你是否在遇到过这样的问题:移动设备上有一个固定元素,当激活虚拟键盘时,该元素被隐藏在了键盘下方?多年来,这一直是 Web 上的默认行为,在本文中,我们将探讨这个问题、为什么会发生
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人员可能会涉及各种各样的安全任务,包括但不限于:开发某些安全工具的插件,满足自己特定的安全需求;自定义github搜索工具,快速查找所需的安全资料、漏洞poc、exp
  • 中国家电海外掘金正当时|出海专题

    作者|吴南南编辑|胡展嘉运营|陈佳慧出品|零态LT(ID:LingTai_LT)2023年,出海市场战况空前,中国创业者在海外纷纷摩拳擦掌,以期能够把中国的商业模式、创业理念、战略打法输出海外,他们依
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 余承东:AI大模型技术的发展将会带来下一代智能终端操作系统的智慧体验

    8月4日消息,2023年华为开发者大会(HDC.Together)今天正式开幕,华为发布HarmonyOS 4、全新升级的鸿蒙开发套件、HarmonyOS Next开发者预览版本等一系列
  • 世界人工智能大会国际日开幕式活动在世博展览馆开启

    30日上午,世界人工智能大会国际日开幕式活动在世博展览馆开启,聚集国际城市代表、重量级院士专家、国际创新企业代表,共同打造人工智能交流平台。上海市副市
Top