如何手動打包 Linux(麒麟系統)的 Qt 程序

gcc版本

gcc版本

確保目標系統(運行環境)的 GCC 版本 高于或等于開發環境的版本,否則程序無法在目標平臺運行。通過 gcc -v 可查看當前版本。

cmake生成可執行文件

強烈建議在cmakelists添加設置運行時 rpath 為 $ORIGIN/…/lib(相對路徑),否則可能在其他設備上運行時會報錯,筆者親身經歷

# 設置運行時 rpath 為 $ORIGIN/../lib(相對路徑)
set_target_properties(${PROJECT_NAME} PROPERTIESINSTALL_RPATH "$ORIGIN/../lib"BUILD_WITH_INSTALL_RPATH TRUE
)set_target_properties(${PROJECT_NAME}c PROPERTIESINSTALL_RPATH "$ORIGIN/../lib"BUILD_WITH_INSTALL_RPATH TRUE
)

img

附上報錯截圖

img

img

筆者這里以sunny450_silc可執行文件為例,編譯在工程路徑下的build目錄中,不會編譯請自行搜索

構建打包目錄

  1. 目錄結構
package/
├── bin/
│   ├── run.sh          # 啟動腳本
│   └── app             # 程序的可執行文件
├── lib/
│   ├── libQt5Core.so.5 # 依賴庫 (例如 Qt 庫)
│   ├── libQt5Gui.so.5  # 依賴庫
│   ├── libQt5Widgets.so.5
│   ├── libstdc++.so.6  # 其他依賴庫
│   └── ...             # 其他庫
├── plugins/            # Qt 插件目錄
│   ├── platforms/
│   │   └── libqxcb.so  # 平臺插件 (用于 GUI 應用的 X11 支持)
│   └── ...             # 其他可能的插件
└── resources/          # 資源文件(可選)└── icon.png        # 圖標或其他資源文件
  1. 建議放到工程路徑下
mkdir -p package/{bin,lib,plugins}

  1. 復制可執行程序到bin目錄下
cp build/sunny450_silc package/bin/

準備程序運行庫

查看所需運行庫

ldd package/bin/sunny450_silc

可以根據各個庫后面的路徑來找對應的庫,并將它們全部復制到之前創建的bin目錄下,或者使用腳本復制依賴庫,筆者這里用腳本.

新建復制腳本

vim cplib.sh

寫入內容

#!/bin/bash
ldd ./sunny450_silc | awk '/=> \// {print $3}' | while IFS= read -r lib; doif [ -L "$lib" ]; thencp "$(readlink -f "$lib")" ../lib/elsecp "$lib" ../lib/fi
done

添加可執行權限

chmod +x package/bin/cplib.sh

執行

./cplib.sh

復制qt插件

查看qt路徑

which qmake

復制

編寫運行腳本

cd bin

vim run.sh

#!/bin/bash
export LD_LIBRARY_PATH=$(dirname $0)/../lib:$LD_LIBRARY_PATH
$(dirname $0)/sunny450_silc

添加可執行權限

chmod +x run.sh

運行

壓縮

tar czvf sunny450_silc.tar.gz package/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917612.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917612.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917612.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決 “crypto.hash is not a function”:Vite 從 6.x 升級至 7.x 后 `pnpm run dev` 報錯問題

🚀 作者主頁: 有來技術 🔥 開源項目: youlai-mall ︱vue3-element-admin︱youlai-boot︱vue-uniapp-template 🌺 倉庫主頁: GitCode︱ Gitee ︱ Github 💖 歡迎點贊 👍 收藏 ?評論 …

我的創作紀念日____在 CSDN一年來的成長歷程和收獲

365 天創作札記:在代碼與文字的褶皺里,遇見 1300 束光一年來。點開csdn網站后臺粉絲數的那一刻,1327 這個數字在屏幕上微微發燙。原來那些在深夜敲下的字符、調試到凌晨的代碼示例、反復修改的技術拆解,真的在時光里悄悄織成了一張…

VirtualBox 的 HOST 鍵(主機鍵)是 右Ctrl 鍵(即鍵盤右側的 Ctrl 鍵)筆記250802

VirtualBox 的 HOST 鍵(主機鍵)是 右Ctrl 鍵(即鍵盤右側的 Ctrl 鍵)筆記250802 VirtualBox 的 HOST 鍵(主機鍵)是什么?HOST鍵 是 右Ctrl 鍵VirtualBox 的 主機鍵(Host Key) 是一個…

Zama的使命

全同態加密(Fully Homomorphic Encryption,FHE)實現互聯網端到端加密的使命的重要里程碑。(FHE) 是一種無需解密即可處理數據的技術。它可用于在公共、無需許可的區塊鏈上創建私人智能合約,只有特定用戶才能看到交易數據和合約狀態…

Go語言流式輸出技術實現-服務器推送事件(Server-Sent Events, SSE)

目錄引言背景與技術概述實現技術細節1. HTTP 頭部配置2. 事件格式與發送3. 保持連接與刷新4. 處理連接關閉4.1 使用上下文管理連接生命周期4.2 使用通道管理客戶端連接5. 客戶端交互6.demo7.Go轉發大模型流式輸出demo引言 服務器推送事件(Server-Sent Events, SSE&…

高端房產管理小程序

系統介紹1、用戶端地圖找房:對接地圖API,地圖形式顯示周邊房源,支持新盤和租房兩種模式查詢房價走勢:城市房價走勢,由后臺每月錄入房源搜索:搜索房源,支持多維度篩選房源類型:新盤銷售、房屋租賃…

文本轉語音(TTS)腳本

文本轉語音(TTS)腳本 概述 generate_voice.py 是一個用于生成語音的Python腳本。該腳本提供了文本轉語音(TTS)功能,可以將文本內容轉換為語音文件。 功能特性 文本轉語音: 將輸入的文本轉換為語音文件多種語音選項: 支持不同的語音類型和參數批量處理: 可以處理多個…

磁盤管理與分區

磁盤管理 一、磁盤類型 SATA,SCSI,SAS類型的磁盤,在Linux中用sd來表示。 其中第一塊硬盤為sda,第二塊二sdb,以此類推。 第一塊硬盤的第一個分區為sda1。 nvme類型的磁盤,在Linux中使用nvmeXnYpZ進行表示。 X:數字&…

Linux 邏輯卷管理

練習創建物理卷(pv->vg->lv)物理卷(PV)就像把一塊塊獨立的硬盤,標記成 "可用于搭建 LVM 的積木",讓系統知道這些硬盤可以被 LVM 管理。#把sdb這塊硬盤標記為物理卷(相當于給這塊積木蓋章,說…

向日葵參考基因組

向日葵參考基因組升級多個版本 向日葵基因組為油脂代謝、開花調控及菊類植物進化提供新見解-文獻精讀151-CSDN博客 官網 https://www.sunflowergenome.org/annotations-data/

什么是爬蟲協議?

什么是爬蟲協議? 爬蟲協議(Crawl Protocol)是指為了有效地收集網頁內容而建立的一些規定和標準,用以指導網絡爬蟲如何在互聯網上抓取信息。 爬蟲協議主要指的是Robots協議(Robots Exclusion Protocol)&am…

空間平面旋轉與xoy平行

空間平面旋轉與xoy平行 法向量 空間平面axbyczd0的其中一個法向量(a,b,c),法向量垂直于空間平面。目標平面平行于xoy的平面為0x0yczd0;其中一個法向量為(0,0,c),c可以為不為0的任意值,取(0,0,1),目標平面的的法向量垂直于xoy平面 向量叉乘點乘 兩個向量的…

odoo reportbro 拖拽式報表設計

報表設計以及下載 在實際業務中應用非常的廣泛且頻繁。odoo 本身也具有報表設計功能,但都是代碼模式。且需要開發人員定制化開發,耗費成本高 所以引入reportbro報表設計就非常的簡單快捷。低代碼模式 以下以銷售報表為例進行演示 報表字段配置報表界面設…

數字信號處理_編程實例1

stem([1,2,3]) 一、初始設置 %% 初始設置 % 清空工作空間,關閉無關頁面 clc,clear,close all; % 繪圖變量 font_size 12; %全局基礎字體大小 axis_size 10; %坐標軸刻度標簽字體大小 line_width 2; %繪圖線條寬度 legend_size 10.5; %圖例字體大小 marker_siz…

Docker 安裝部署 OceanBase

1.拉取鏡像 docker pull oceanbase/oceanbase-ce:latest2.啟動oceanbase容器 docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE0 -d quay.io/oceanbase/oceanbase-ce3.查看oceanbase初始化的日志信息 docker logs oceanbase-ce4.進入oceanbase容器 docker exec -it o…

【華為機試】685. 冗余連接 II

文章目錄685. 冗余連接 II題目描述示例 1:示例 2:提示:解題思路算法分析核心思想算法策略算法對比問題分類流程圖并查集環檢測流程入度統計與候選邊選擇情況分析決策樹完整算法流程復雜度分析時間復雜度空間復雜度關鍵實現技巧1. 并查集優化2…

Redis之Hash和List類型常用命令

Redis之Hash和List類型常用命令一、Hash類型詳解1. Hash類型的特點2. 常用命令及示例(1)設置字段值(2)獲取字段值(3)刪除字段(4)其他常用命令3. 應用場景二、List類型詳解1. List類型…

【測試】?動化測試概念篇

本節?標:?動化測試Web?動化測試selenium1. ?動化1.1 ?動化概念?動化在?活中處處可?,?動的代替?的?為完成操作。?動灑?機,主要通上?就可以?動化灑?并且可以?動的旋轉。?動洗?液,免去了?動擠壓可以?動感應出洗…

Java中給List<T> 對象集合去重

Java中給List 對象集合去重List<Student> getStudentList studentMapper.getStudentList();List<Student> distinctInsurance distinctByField(getStudentList, Student::getCertNo);public static <T> List<T> distinctByField(List<T> list…

最小二乘法MSE

最小二乘法MSEx1x2x3x4x5x6x7x8x0y014805-29-31339-41064-14-2-1481-114-1-65-123-32-21305-23105114-81126-15-15-8-157-4-1221-39511-10-243-9-671-87-1404-35101371422-3-7-2-80-6-5-91-3091前景知識: 矩陣相關公式y(339?11430126?395?87422?309)y\begin{pmatrix} 339&a…