在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在玲瓏容器中編譯qBittorrent并測試運行

深度操作系統 ? 來源:深度操作系統 ? 2025-03-10 11:26 ? 次閱讀

通過《如意玲瓏應用構建指南(一):規范體系與配置文件全解析》的學習后,相信大家已經對玲瓏應用構建工程基礎知識有了一定的了解。在接下來的系列推文中,我們將深入實操環節,帶大家利用所學知識正式構建玲瓏應用。

本篇作為“如意玲瓏應用構建從入門到實戰”系列的第二篇,我們將以開源圖形應用 qBittorrent 為例,為大家將演示如何進入玲瓏容器、以及如何在玲瓏容器中編譯 qBittorrent 并測試運行。

01前期準備

根據玲瓏應用構建工程通用資源的規范要求,我們應當為一款圖形化應用同時提供保障桌面用戶體驗的 icons 圖標文件及 desktop 啟動文件。但本節實操演示僅在玲瓏容器中進行編譯、測試操作,因此暫時不需要準備通用資源。 本次分享基于 deepin 23 發行版,因此在進行以下任意步驟前均需要準備一個可以構建玲瓏應用的 deepin 23 系統環境:

確保環境中已經安裝 ll-builder 構建套件, 不同發行版安裝方式參考如意玲瓏安裝教程[1];

由于在構建過程中我們需要聯網獲取玲瓏容器的運行庫以及可能需要的第三方庫,因此我們需要保障全操作過程能夠得到順暢的網絡連接;

在通過玲瓏容器編譯前, 最好先在比較接近本次構建容器的 deepin 23 中成功編譯過 qBittorrent,以確保你對源代碼編譯有一定的了解

結合上一節玲瓏應用構建工程 linglong.yaml 規范,并按照以下模板簡單編寫一版玲瓏構建工程配置文件 linglong.yaml,以此來生成一個符合要求的容器。

主要有以下兩個方面需要關注:

由于本次操作是直接進入容器進行操作,因此 build 部分的構建規則可不詳細寫;

由于本次涉及編譯操作,為了能夠極大程度包含所需的運行庫,我們加入 runtime 段,具體編寫規范參考《如意玲瓏應用構建指南(一)》。

# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
#
# SPDX-License-Identifier: LGPL-3.0-or-later


version: "4.6.7.2"


package:
  id: org.qbittorrent.qBittorrent
  name: "qBittorrent"
  version: 4.6.7.2
  kind: app
  description: |
    qBittorrent binary


base: org.deepin.foundation/23.0.0
runtime: org.deepin.Runtime/23.0.1


command:
  - /opt/apps/org.qbittorrent.qBittorrent/files/bin/qbittorrent


source:
  - kind: local
    name: "qBittorrent"


build: |
  mkdir -p ${PREFIX}/bin/ ${PREFIX}/share/

02項目編譯演示

在這里需要回顧一個知識點: 根據玲瓏應用目錄結構規范,與構建工程配置文件 linglong.yaml 同級的構建目錄將被映射為 /project 目錄。

萬事俱備,我們就可以開始編譯了

1. 為了方便操作,在構建目錄下同時開啟兩個 shell 窗口,分別用于玲瓏容器操作普通操作

2. 在完成準備 linglong.yaml 編輯后,我們就可以開始生成容器了,執行有限的操作以直接進入玲瓏容器:

szbt@szbt-linyaps23:/media/szbt/Data/ll-build/QT/qBittorrent-git$ ll-builder build --exec bash
路徑發生類似以下變化時,即意味著我們已經進入玲瓏容器中了。
szbt@szbt-linyaps23:/project$
3.通過普通操作窗口解壓 qBittorrent-4.6.7 源碼到構建目錄中,我這里單獨解壓到一個子目錄中。
szbt@szbt-linyaps23:/media/szbt/Data/ll-build/QT/qBittorrent-git$ tar -xvf qBittorrent-4.6.7-git-origin-src.tar.zst -C src/

4. 源碼解壓后,根據玲瓏應用構建基本步驟,我們在編譯任意源代碼前應該正確選擇使用何種編譯系統/工具。我們通過觀察 qBittorrent-4.6.7 源碼目錄, 可以看到其存在 CMakeLists.txt 文件,這是 CMake 構建項目。

00f9943e-fa74-11ef-9310-92fbcf53809c.png

5.由于 qBittorrent INSTALL[2]中簡要描述了本項目主要使用的運行庫,因此我們可以對照此文檔來判斷哪些運行庫存在與玲瓏提供的 base、runtime 中,或哪些運行庫并未被提供。對于暫未被正式提供的運行庫,在編譯主程序前我們可能需要先預編譯必要的第三方庫。

由于文檔所述需要的運行庫較少,此次我們可以先直接進行一次測試編譯來確認運行庫缺失情況。

6.通過玲瓏容器操作窗口進入源碼目錄,為了盡量避免對源目錄的干擾,我這里新建一個 build 目錄用于編譯。進入 build 目錄后我們輸入 CMake 相關配置參數來配置構建工程。

根據玲瓏應用目錄結構規范,我們將 DCMAKE_INSTALL_PREFIX 賦予 $PREFIX 的值,最終我在本地執行了以下操作:

  cmake -DCMAKE_BUILD_TYPE=Release
 -DCMAKE_INSTALL_PREFIX=$PREFIX ..

7. 可以從圖中看到,這里出現了一個錯誤導致無法完成配置。我們看到 pkg-config 出現錯誤:libtorrent-rasterbar>=1.2.19 庫不能滿足條件:

010b0d86-fa74-11ef-9310-92fbcf53809c.png

-- Found PkgConfig: /bin/pkg-config (found version "1.8.1") 
-- Checking for module 'libtorrent-rasterbar>=1.2.19'
單獨通過 pkg-config 亦無法獲取該庫的相關信息:
szbt@szbt-linyaps23:/project/src/qBittorrent-release-4.6.7-szbt2/build$ pkg-config --print-provides libtorrent-rasterbar

結合此報錯,基本可以判斷為該庫缺失,因此我們需要在編譯主程序前編譯并安裝此第三方庫。

8. 返回普通操作窗口將 libtorrent-rasterbar>=1.2.19 庫對應的源碼下載到當前構建目錄中,進入玲瓏容器操作窗口重新編譯。

9. 源碼解壓后,根據玲瓏應用構建基本步驟,我們在編譯任意源代碼前應該正確選擇使用何種編譯系統/工具。我們通過觀察 libtorrent-rasterbar-2.0.9 源碼目錄,可以看到其存在 CMakeLists.txt 文件,這是 CMake 構建項目。

014206ce-fa74-11ef-9310-92fbcf53809c.png

10. 我們通過玲瓏容器操作窗口進入源碼目錄,為了盡量避免對源目錄的干擾,我這里新建一個 build 目錄用于編譯。進入 build 目錄后我們輸入 CMake 相關配置參數來配置構建工程。

根據玲瓏應用目錄結構規范,我們將 DCMAKE_INSTALL_PREFIX 賦予 $PREFIX 的值,最終我在本地執行了以下操作:

  cmake -DCMAKE_BUILD_TYPE=Release
 -DCMAKE_INSTALL_PREFIX=$PREFIX ..
  make -j$(nproc)
  make install

可以看到, 第三方庫 libtorrent-rasterbar-2.0.9 成功完成編譯并安裝到容器的 $PREFIX 目錄中了,我們可以開啟下一個操作。

11. 我們返回玲瓏容器操作窗口進入 qBittorrent-4.6.7 源碼目錄,重新執行配置、編譯、安裝操作, 均不存在報錯了。

03編譯結果測試

流程結束后,在 $PREFIX 目錄中找到該項目的二進制執行文件并在容器中運行測試,該二進制執行文件為: /opt/apps/org.qbittorrent.qBittorrent/files/bin/qbittorrent 注意,該操作需要在圖形化桌面的終端操作,否則有可能無法調起程序的圖形界面。

由下圖可見并不是直接通過容器啟動,發生了運行庫無法找到的問題,因為報錯的庫也在 $PREFIX 中,因此我們直接通過變量 LD_LIBRARY_PATH 來指定動態運行庫尋找路徑。

014f796c-fa74-11ef-9310-92fbcf53809c.png

由此可見,qBittorrent 已經成功在如意玲瓏應用容器中成功編譯并運行!

關于項目

如意玲瓏(Linyaps)是一種新型的獨立包管理工具集,專注于解決 Linux 系統下由傳統軟件包格式的復雜性和交叉依賴關系引起的兼容性問題。項目通過先進的隔離技術,將應用與系統完全解耦,從根本上解決因環境變化引發的應用兼容性問題,實現“一個架構,一次構建”,致力于簡化軟件開發流程、降低維護成本、加強數據安全,促進技術與平臺間的協同合作,構建一個更加繁榮、安全和高效的 Linux 軟件生態環境。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開源
    +關注

    關注

    3

    文章

    3475

    瀏覽量

    42967
  • 容器
    +關注

    關注

    0

    文章

    502

    瀏覽量

    22206
  • 編譯
    +關注

    關注

    0

    文章

    668

    瀏覽量

    33235

原文標題:如意玲瓏應用構建指南(二):在玲瓏容器中編譯基于 Qt5 的開源應用

文章出處:【微信號:linux_deepin,微信公眾號:深度操作系統】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    嵌入式Qt-做一個秒表

    本篇通過一個秒表的實例,介紹了如何使用Qt Creator的UI界面設計功能,進行Qt的開發,并將代碼進行交叉編譯,放入i.MX6ULL的Linux環境測試運行情況。
    的頭像 發表于 09-08 08:52 ?2373次閱讀
    嵌入式Qt-做一個秒表

    何在Docker創建容器

    Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bar
    發表于 01-03 15:58

    C6748程序測試運行速度很慢

    寫了一小段程序,測C6748程序運行速度,實際上就是通過用for循環對數組循環賦值,測試運行速度,程序如下:unsigned charbuffer[1024];void RunSpeedTest
    發表于 09-19 07:51

    如何又好又快的測試多組穩速電機?

    用戶設置的參數自動配置儀器的狀態,完成對產品的測試。 參數設置界面4、測試運行界面進入到測試運行界面,測試人員在運行
    發表于 11-15 11:03

    關于c6678測試運行OpenMP例程問題

    的支持。出現的問題:1. platform一欄沒有ti.runtime.openmp.platform.evm6678選項。但可以手動填寫。2. 編譯時會顯示 XDCCGROOT環境變量沒有設置。請問
    發表于 04-29 17:08

    倍福TwinCAT應用教程12.1 TwinCAT控制松下伺服 連接和試運行

    首先是用松下伺服自帶的軟件可以測試運行(驅動器,電機都連接好,然后用USB線連接到松下伺服驅動器的X1口),打開調試軟件會自動提示連接到伺服 一般需要對驅動器清除絕對值編碼器數據(驅動器可能報錯40
    發表于 07-02 07:29

    何在嵌入式容器Jetty或Tomcat運行帶有Maven的Java Web應用程序

    在開發Java Web應用程序時,從“真實”環境獲得快速反饋非常實用。 在本文中,我將探討如何在嵌入式容器Jetty或Tomcat運行
    發表于 12-16 06:24

    矢量字庫移植測試的相關資料推薦

    單片機移植矢量字庫,測試運行速度
    發表于 01-10 07:15

    怎樣把編譯好的Uboot寫入station p2開機試運行一次呢

    怎樣把編譯好的Uboot寫入station p2開機試運行一次呢?
    發表于 03-02 07:56

    使用身邊搭載HarmonyOS環境的實體真機進行測試指南

    1、使用真機測試運行HarmonyOS應用想要做華為應用開發,首先你需要安裝Deveco studio編譯軟件然后.你就可以進行編程了,但是測試自己的程序需要HarmonyOS的環境。目前有三種方式
    發表于 05-24 17:31

    大佬們,如何測試運行一條指令要多少時間?

    大佬們,如何測試運行一條指令要多少時間,我目前想用定時器中斷做步進電機S型加減速,想在回調函數內關全局中斷,最后再打開,防止電機運行出錯,這種想法是否可取?又該如何測試某條指令耗的時間有多少?
    發表于 09-08 15:35

    為藍牙RF測試測試運行edgefast_ blueooth_ shell,按下命令bt. init沒有反應是怎么回事?

    我正在嘗試為藍牙 RF 測試測試運行“ edgefast_ blueooth_ shell ” 演示。 但是, 如果我運行演示并按下命令“ bt. init ” , 它沒有反應, 我無法輸入任何
    發表于 11-13 07:28

    Motional在拉斯維加斯公路上完成自動駕駛車輛的試運行

    據韓聯社消息,自動駕駛技術公司Motional日前在拉斯維加斯的公路上完成了自動駕駛車輛的試運行。Motional在拉斯維加斯投入多輛無人駕駛汽車,測試其在交叉路口、無紅綠燈路口以及復雜路況的表現。在此次
    的頭像 發表于 02-24 11:37 ?1859次閱讀

    何在Docker容器運行Nginx

    在本教程,您將學習如何將 Nginx 作為 Docker 容器運行,并將其公開給您的本地網絡。此外,您將學習如何創建 Docker 數據卷以在容器和主機文件系統之間共享信息。
    的頭像 發表于 02-17 09:30 ?2091次閱讀

    何在 CFD 設計利用網格維護幾何形狀減少運行時間?

    何在 CFD 設計利用網格維護幾何形狀減少運行時間?
    的頭像 發表于 11-24 17:07 ?589次閱讀
    如<b class='flag-5'>何在</b> CFD 設計<b class='flag-5'>中</b>利用網格維護幾何形狀<b class='flag-5'>并</b>減少<b class='flag-5'>運行</b>時間?
    主站蜘蛛池模板: 国产一级久久免费特黄 | 国产美女视频一区二区三区 | 黄网站免费视频 | 免费一级毛片在线播放 | 成年男人永久免费看片 | 免费一级特黄视频 | 奇米狠狠干 | 日本一区二区三区不卡在线视频 | 在线婷婷| 色综合久久综合 | 亚洲欧洲日韩综合 | 天天曰夜夜曰 | 国产三级网| 日本人xxxxxxxxxⅹ68 | 四虎影院台湾辣妹 | 操女人视频网站 | 国产精品高清免费网站 | 欧美精品videofree720p| 久热国产在线 | 成人www视频 | 亚洲婷婷综合色高清在线 | 男女交性视频播放 视频 视频 | 日本色午夜| 色婷婷狠狠干 | 欧美高清xx | 亚洲欧美经典 | a免费在线 | 久久看片网 | 精品一区二区视频 | 婷婷久久综合九色综合九七 | 成年大片免费播放视频人 | 日本成片免费高清 | 日韩免费精品一级毛片 | 啪啪免费网站视频观看 | 深深激情网 | 国产精品一区在线观看你懂的 | 热久久久久 | 狠狠色噜噜狠狠狠97影音先锋 | 久热国产精品 | 欧美黑人换爱交换乱理伦片 | 亚洲综合色婷婷久久 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品