在 Docker 中使用多平臺功能的最簡單方法是從命令行調(diào)用它。使用docker buildx,我們可以利用新的測試版功能。通過運行docker buildx build --pla" />

日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 知識百科

使用Docker多階段多平臺編譯Qt

來源: 責(zé)編: 時間:2023-08-07 16:30:40 214觀看
導(dǎo)讀 Docker 中的多平臺如何工作?
在 Docker 中使用多平臺功能的最簡單方法是從命令行調(diào)用它。使用docker buildx,我們可以利用新的測試版功能。通過運行docker buildx build --pla

Docker 中的多平臺如何工作?
在 Docker 中使用多平臺功能的最簡單方法是從命令行調(diào)用它。使用docker buildx,我們可以利用新的測試版功能。通過運行docker buildx build --platform linux/arm/v7 -t arm-build 。此命令使用 ARMv7 仿真根據(jù)當(dāng)前目錄中的“Dockerfile”構(gòu)建 docker 映像。在幕后,Docker 在 QEMU 虛擬化環(huán)境(qemu-user-static準(zhǔn)確地說)中運行整個 Docker 構(gòu)建過程。通過這樣做,可以消除設(shè)置自定義 VM 的復(fù)雜性。一旦構(gòu)建完成,我們甚至可以使用docker runARMv7 模式自動啟動容器。Ryh28資訊網(wǎng)——每日最新資訊28at.com

多平臺、多階段和Qt
雖然多平臺功能是一個很棒的獨立功能,但與多階段構(gòu)建結(jié)合使用時它會變得更加強大。在單個 Dockerfile 中,我們能夠混合和匹配平臺并在步驟之間進行復(fù)制。這個功能正是我們最終為 Screenly OSE 使用 Qt 構(gòu)建過程所做的。Ryh28資訊網(wǎng)——每日最新資訊28at.com

第一階段:ARMRyh28資訊網(wǎng)——每日最新資訊28at.com

感謝Balena的優(yōu)秀人員,我們能夠在第一階段使用 Raspbian 基礎(chǔ)映像。我們可以使用以下方法調(diào)用此步驟:Ryh28資訊網(wǎng)——每日最新資訊28at.com

FROM --platform=linux/arm/v7 balenalib/rpi-raspbian:buster as builder
在上述步驟之后,我們可以像往常一樣使用 Docker 并執(zhí)行各種RUN命令,例如安裝包等。請注意,如果構(gòu)建不是在 ARMv7 硬件上運行,則此容器正在使用 QEMU 模擬運行。在我們的例子中,我們使用命令來安裝 Qt 構(gòu)建依賴項。上述步驟還允許我們完全消除從磁盤映像(這是Qt Wiki建議的)或rsync物理 Raspberry Pi 的文件復(fù)制文件的需要。Ryh28資訊網(wǎng)——每日最新資訊28at.com

第 2 階段:x86Ryh28資訊網(wǎng)——每日最新資訊28at.com

一旦我們在 ARM 步驟中安裝了依賴項,我們就可以切換到構(gòu)建器的原生 x86 架構(gòu)以避免仿真,并使用以下行進行交叉編譯:Ryh28資訊網(wǎng)——每日最新資訊28at.com

FROM --platform=linux/amd64 debian:buster
現(xiàn)在,我們進入了有趣的部分。切換到 x86 后,我們可以復(fù)制上一步中的文件。我們這樣做是為了創(chuàng)建一個可用于 Qt 的 sysroot。我們通過運行以下命令來完成此步驟:Ryh28資訊網(wǎng)——每日最新資訊28at.com

RUN mkdir -p /sysroot/usr /sysroot/opt /sysroot/libRyh28資訊網(wǎng)——每日最新資訊28at.com

COPY --from=builder /lib/ /sysroot/lib/Ryh28資訊網(wǎng)——每日最新資訊28at.com

COPY --from=builder /usr/include/ /sysroot/usr/include/Ryh28資訊網(wǎng)——每日最新資訊28at.com

COPY --from=builder /usr/lib/ /sysroot/usr/lib/Ryh28資訊網(wǎng)——每日最新資訊28at.com

COPY --from=builder /opt/vc/ sysroot/opt/vc/
我們現(xiàn)在擁有兩全其美的優(yōu)勢。通過利用多步驟和多平臺功能,我們生成了一個可用于構(gòu)建 Qt 的 sysroot。由于我們在上一步中使用了功能齊全的 Raspbian 映像,我們甚至可以讓 Qt 獲取所有現(xiàn)有的庫。Ryh28資訊網(wǎng)——每日最新資訊28at.com

./configure /
      -sysroot /sysroot
正如我們在介紹中提到的,編譯 Qt 遠非簡單。成功編譯它需要很多步驟。Ryh28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-119-2501-0.html使用Docker多階段多平臺編譯Qt

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Salesforce聯(lián)合首席執(zhí)行官將辭職 貝尼奧夫?qū)⒃俅为氄乒?/a>

下一篇: Docker使用緩存編譯 Qt

標(biāo)簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 台北市| 公主岭市| 若羌县| 三河市| 黄平县| 福泉市| 东宁县| 寿宁县| 广东省| 江安县| 阳高县| 宿州市| 宁国市| 武邑县| 紫金县| 灌南县| 临洮县| 虞城县| 宁武县| 扶绥县| 石狮市| 保山市| 南皮县| 大丰市| 齐河县| 同心县| 昌乐县| 云南省| 浪卡子县| 张北县| 龙岩市| 额尔古纳市| 瑞昌市| 吉安县| 浦江县| 方山县| 大新县| 英吉沙县| 伊宁县| 莱州市| 开鲁县|