Qt程序移植
目錄
- 一、前言
- 二、Windows Qt程序移植
- 三、Linux Qt程序移植
- 附:其他相關文章
一、前言
??我們使用Qt軟件構建項目之后得到exe執行文件,但是exe文件正常執行需要依賴Qt的各種動態庫,所以如果想要在電腦上直接雙擊運行exe文件,就需要配置系統的環境變量,將Qt的動態庫路徑添加到系統的環境變量中,才能保證程序正常運行。
??通常情況下,我們都需要把程序安裝到其他的電腦或設備上運行,而我們需要安裝應用程序的電腦不一定已經安裝Qt軟件并且配置好系統環境變量,另外如果我們的程序運行需要依賴安裝Qt軟件的話肯定是不合理的。所以,為了能夠讓程序在其他的電腦上正常運行,此時就需要對程序進行打包,然后移植到目標電腦或設備上運行即可。
二、Windows Qt程序移植
1、首先在Qt的安裝安裝目錄下找到項目構建套件的目錄(如mingw73_32),進入該目錄,創建一個自定義的目錄,然后把Qt項目構建生成的exe文件拷貝到新建的目錄中。
2、打開Qt的命令行操作終端,然后進入我們新建的目錄,在命令行中輸入windeployqt test.exe(程序名字根據實際而定),然后回車執行,等待命令執行完畢。
3、 打包完成,在剛才新建的目錄里面多了很多文件,這些文件都是exe運行必要的庫文件,此時我們就可以把當前的整個目錄拷貝移植到其他電腦上面運行了。
注意:
- 上述的操作只能添加Qt自帶的dll文件,如果我們的項目中使用了第三方的庫文件,就必須要手動把對應dll文件拷貝到這個程序目錄中。比如,項目中使用了FFMpeg數據庫,那就需要手動添加FFMpeg相關的dll和lib文件。
- exe程序打包的目錄和命令行終端執行打包命令的路徑需要根據項目構建的使用的套件而定(如mingw73_32),因為不同的構建套件使用的庫文件不一樣,所以exe文件必須要放到對應構建套件的目錄下打包才可以。
三、Linux Qt程序移植
??Linux下Qt項目構建生成的執行文件同樣需要打包所需的庫文件才能移植到其他設備上運行,僅限于使用Qt動態構建套件才需要打包庫文件進行移植。如果自己通過Qt源碼編譯設置了靜態構建套件的話,則不需要進行庫文件打包移植,因為靜態構建已經把程序所需的庫文件編譯到執行文件了,只把執行文件移植到其他設備上就可以正常運行。
??Linux下Qt程序打包的步驟如下:
1、使用Qt編譯完之后得到可執行文件如demo
2、新建打包文件夾如demoPack,把demo拷貝到該文件夾下
3、新建一個腳本文件pack.sh,作用是提取lib文件
4、新建一個腳本文件demo.sh
5、在終端輸入./pack.sh運行腳本,執行成功之后會得到依賴的lib文件
6、測試是否可以執行,在終端輸入./demo.sh運行腳本
7、移植到未安裝Qt環境的設備運行,測試是否可用
??腳本文件pack.sh的內容如下:
#!/bin/sh# program name exe="demo" # package directory path, must create it in advance des="/home/demoPack"deplist=$(ldd $exe | awk '{if (match($3,"/")){ printf("%s "),$3 } }') cp $deplist $des??腳本文件demo.sh的內容如下:
#!/bin/shappname=`basename $0 | sed s,\.sh$,,` dirname=`dirname $0` tmp="${dirname#?}" if [ "${dirname%$tmp}" != "/" ]; thendirname=$PWD/$dirname fi LD_LIBRARY_PATH=$dirname export LD_LIBRARY_PATH $dirname/$appname "$@"附:其他相關文章
Windows Qt設置環境變量
總結
- 上一篇: 浅谈平衡树
- 下一篇: UML类图最生动的介绍和例子