日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...

發(fā)布時間:2025/3/15 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文介紹如何打包Qt程序,使其在沒有安裝Qt的系統(tǒng)可以運行。

默認(rèn)前提:另外一個系統(tǒng)和本系統(tǒng)是同一個系統(tǒng)版本。

1,編寫導(dǎo)出依賴包的腳本copylib.sh

#!/bin/bash

LibDir=$PWD"/lib"

Target=$1

lib_array=($(ldd $Target | grep -o "/.*" | grep -o "/.*/[^[:space:]]*"))

$(mkdir $LibDir)

for Variable in ${lib_array[@]}

do

cp "$Variable" $LibDir

done

1

2

3

4

5

6

7

8

9

10

11

12

13

14

更改可執(zhí)行權(quán)限

chmod u+x copylib.sh

1

2

2,打開終端并進(jìn)入到存放程序的(假設(shè)叫MyRelease)文件夾,運行下面命令(假設(shè)程序叫MyApp)

./copylib.sh MyApp

1

2

在此目錄下會自動生成lib文件夾,腳本實際上是調(diào)用了 ldd MyApp指令獲得MyApp運行時需要哪些庫,并將庫都復(fù)制放到當(dāng)前目錄的lib文件夾中。

3、把lib里的所有文件剪切到 MyRelease目錄下,并刪除此lib文件夾。

4、進(jìn)入QT的安裝目錄,找到platforms文件夾,本文路徑是

/opt/Qt5.3.1/5.3/gcc_64/plugins/platforms/

1

2

將整個platforms文件夾復(fù)制到MyRelease文件夾中,注意:這時復(fù)制的是整個文件夾,這使得MyRelease文件夾中會多出一個platforms文件夾。

5、將上文的copylib.sh放到MyRelease/platforms/中,并運行

./copylib.sh libqxcb.so

1

2

這時在當(dāng)前目錄會得到新的lib文件夾。

將lib里的所有文件剪切到 MyRelease目錄下,并刪除此lib文件夾

6、在MyRelease文件夾中新建程序啟動腳本MyApp.sh(腳本名稱和App名稱相同)

#!/bin/sh

appname=`basename $0 | sed s,\.sh$,,`

dirname=`dirname $0`

tmp="${dirname#?}"

if [ "${dirname%$tmp}" != "/" ]; then

dirname=$PWD/$dirname

fi

LD_LIBRARY_PATH=$dirname

export LD_LIBRARY_PATH

$dirname/$appname "$@"

1

2

3

4

5

6

7

8

9

10

11

12

13

更改可執(zhí)行權(quán)限

chmod u+x MyApp.sh

1

2

7、測試程序

修改Qt的安裝路徑名稱,如 /opt/Qt5.3.1/5.3 修改為 /opt/Qt5.3.1/5.311,

修改后,運行程序時就不能找到安裝目錄里的庫文件了。

sudo mv /opt/Qt5.3.1/5.3/ /opt/Qt5.3.1/5.311

1

2

這樣就可在本機上做測試了。

在MyRelease文件夾下運行

./MyApp.sh

1

2

可能會報錯:

This application failed to start because it could not find or load the Qt platform plugin "xcb".

Available platform plugins are: xcb.

Reinstalling the application may fix this problem.

1

2

3

4

5

6

解決辦法:

如果你修改了Qt安裝路徑名稱,現(xiàn)在先修改回來,如:

sudo mv /opt/Qt5.3.1/5.311 /opt/Qt5.3.1/5.3

1

2

在MyRelease文件夾發(fā)現(xiàn)存在了一個libQt5DBus.so.5庫文件,但他只是一個符號鏈接,需要把它補全。

[user@localhost]$ locate libQt5DBus

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.la

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.prl

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3.1

...

1

2

3

4

5

6

7

8

9

把這兩個庫文件

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3

/opt/Qt5.3.1/5.3/gcc_64/lib/libQt5DBus.so.5.3.1

1

2

3

拷貝到MyRelease文件夾下,然后再次運行啟動腳本。

先修改路徑(用以本地測試)

sudo mv /opt/Qt5.3.1/5.3/ /opt/Qt5.3.1/5.311

1

2

運行啟動腳本

./MyApp.sh

1

2

OK,程序啟動成功。

現(xiàn)在可以把MyRelease打包成壓縮包,拷貝到其他系統(tǒng)上去運行了。

友情提示,測試完畢,如果修改了Qt安裝路徑,不要忘記再修改回來。

總結(jié)

以上是生活随笔為你收集整理的Linux qt程序打包依赖库,Linux打包免安装的Qt程序(编写导出依赖包的脚本copylib.sh,程序启动脚本MyApp.sh)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。