2016-04-15 29 views
0

我正在使用appimage http://appimage.org將我的應用程序打包爲獨立的可執行文件。如何使用appimage部署qt5應用程序

我在debian testing lenny上做了這個工作。

我的應用程序使用了很多開源庫(qt,python pythonqt fftw hdf4/5 gsl netpbm qwt),並且一切正常,使用Qt4。我可以在debian上編譯我的應用程序,並創建一個在mint(使用xfce)上平滑運行的appdir圖像。

當我切換到Qt5時停止工作。

現在appimage Debian上運行,而不是在薄荷,我得到這個錯誤:

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

Available platform plugins are: eglfs, kms, linuxfb, minimal, minimalegl, offscreen, xcb. 

Reinstalling the application may fix this problem. 
Aborted 

注意,messege非一致:firts它說我缺乏xcb和比它MAKS可用。

我沒有在我的應用程序usr/lib樹中複製plugins目錄。 我已經XCB安裝在主機apt-get install libx11-xcb1

我AppRun文件看起來像這樣:

#!/bin/bash 
HERE="$(dirname "$(readlink -f "${0}")")" 
cd "${HERE}/usr/" 
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${LD_LIBRARY_PATH}" 
export PATH="${HERE}/usr/bin:${PATH}" 
export QT_PLUGIN_PATH="${HERE}/usr/lib" 
exec "${HERE}/usr/bin/Neutrino" "[email protected]" 
cd - 

我缺少什麼?

回答

2

許多Qt5應用程序(如Krita,Scribus和Subsurface)正在作爲AppImages發佈,所以它絕對有可能。

可能您錯過了一些需要捆綁在AppImage中的組件。尤其是,Qt插件需要捆綁在AppImage中才能使用。

查看here瞭解如何將Qt5.5應用打包爲AppImage。

請注意,通常建議使用舊的基礎系統(如CentOS 6)進行編譯,因爲生成的AppImage將與更多的發行版兼容,而不僅僅是最新的發行版。

如果您發佈一個鏈接到您的項目或在https://github.com/probonopd/AppImages/issues上打開問題,我可能會給你更詳細的說明。

+0

謝謝!我在scribus appimage腳本中看到了這一行:'ldd usr/lib/qt5/plugins/platforms/libqxcb.so | grep「=>」| awk'{print $ 3}'| xargs -I'{}'cp -v'{}'。/ usr/lib'這可能會有幫助,明天我會試試 – bibi

+0

對不起@probono,但它不起作用......當然,我安裝了插件目錄在appdir'/ usr/lib/plugin'中,我也複製了每個插件所需的所有庫...沒有成功。 – bibi

+0

代碼在這裏:https://github.com/aflux/neutrino但由於在測試Debian(qwt for qt5)缺少一些庫而沒有完全編譯庫(pythonqt與qt_all支持),這是一個混亂的構建(這是爲什麼我想要像appimage這樣的東西) – bibi