找回密码
 立即注册
收起左侧

【Qt5 Ubuntu動態鏈結庫發佈配置問題】

7
回复
9142
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2017-7-11 11:02:58 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 yishiang0217 于 2017-7-11 11:34 编辑

各位板友大家好,

我想請問Qt5於Ubuntu下發布檔案(含動態庫)至另一台沒有裝Qt庫的問題,
為了測試,我用Qt Creator建立了一個空白的QMainWindow專案,
直接進行編譯,於Qt Creator執行能成功,而於command line執行無法成功,
於是我參照官方文檔,建立.sh檔後執行.sh檔即可成功執行。
http://doc.qt.io/qt-5/linux-deployment.html
(文檔中說明預設名platforms需於執行程序目錄的子目錄且包含libqxcb.so,
而.sh檔是直接拷貝官方內容,並置於執行程序同層級目錄。)

但將執行目錄中的檔案打包至另一台虛擬機的Ubuntu中,
(於打包前有用ldd查詢程序所需動態庫,並複製至執行目錄的子目錄lib下)
執行.sh檔卻出現了..
"it could not find or load the qt platform plugin xcb in"
類似的訊息,用ldd查詢執行檔,所有所需的動態庫皆可於執行目錄的子目錄找到,
(有於.pro檔設定rpath:QMAKE_LFLAGS += "-Wl,--rpath,\'\$$ORIGIN/lib\'"
不論設不設定都得到相同的錯誤訊息)
懇請板上先進給予詳細指引。

以下是我的執行程序目錄結構:
MyApp/
├── lib
│ ├── libicudata.so.56
│ ├── libicui18n.so.56
│ ├── libicuuc.so.56
│ ├── libQt5Core.so.5
│ ├── libQt5DBus.so.5
│ ├── libQt5Gui.so.5
│ └── libQt5XcbQpa.so.5
│ (以下省略..)

├── plugins(/Qt/ggc_64/plugins資料夾完整複製)
│ ├── platforms

├── platforms(/Qt/ggc_64/plugins/platforms/資料夾完整複製)
│ ├── libqxcb.so


├── MyApp(可執行文件)

├── MyApp.sh

若有板上先進知道如何解決問題,還請不吝賜教,謝謝^^
--
曾基於上面的後續嘗試加入qt.conf和MyApp可執行文件同級目錄,
內容為:
[Paths]
Prefix = ./
Libraries = lib
Plugins = plugins

也是不行,不曉得是不是沒有讀到。

最佳答案

查看完整内容

怀疑是不是缺少了别的运行库,你先在虚拟机系统里面的软件安装管理器随便安装一个qt5写的程序,这样就会自动带上qt所需的运行库。
回复

使用道具 举报

尚未签到

2017-7-11 11:02:59 显示全部楼层
怀疑是不是缺少了别的运行库,你先在虚拟机系统里面的软件安装管理器随便安装一个qt5写的程序,这样就会自动带上qt所需的运行库。
回复

使用道具 举报

尚未签到

2017-7-11 11:56:11 显示全部楼层
x86 电脑?
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-7-11 11:59:08 显示全部楼层
是跑在Virtual Box的Ubuntu x64 16.04 LTS版本喔
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-7-11 12:05:37 显示全部楼层

是跑在Virtual Box的Ubuntu x64 16.04 LTS版本喔
回复

使用道具 举报

尚未签到

2017-7-12 19:10:08 显示全部楼层
用ldd命令看需要什么动态库就行了
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-7-13 10:44:27 显示全部楼层
本帖最后由 yishiang0217 于 2017-7-13 11:00 编辑
Joey_Chan 发表于 2017-7-12 19:10
用ldd命令看需要什么动态库就行了

Hi Joey~

首先謝謝您的回覆,於目標平台Ubuntu(無配置Qt)上進行試驗(無qt.conf)還是失敗,以下將進行我的操作說明:
--
使用Qt 5.9.1

1. ldd Demo 提示無缺檔案
(以下節錄部份訊息...)
james@james-virtual-machine:~/下載/Demo9$ ldd Demo
    linux-vdso.so.1 =>  (0x00007ffd196d8000)
    libVLCQtCore.so.1.1 => /home/james/下載/Demo9/./lib/libVLCQtCore.so.1.1 (0x00007f6616bc9000)
    libVLCQtWidgets.so.1.1 => /home/james/下載/Demo9/./lib/libVLCQtWidgets.so.1.1 (0x00007f66169b1000)
    libQt5Widgets.so.5 => /home/james/下載/Demo9/./lib/libQt5Widgets.so.5 (0x00007f6616180000)
    libQt5Gui.so.5 => /home/james/下載/Demo9/./lib/libQt5Gui.so.5 (0x00007f66159d2000)
    libQt5Core.so.5 => /home/james/下載/Demo9/./lib/libQt5Core.so.5 (0x00007f6615298000)
    libstdc++.so.6 => /home/james/下載/Demo9/./lib/libstdc++.so.6 (0x00007f6614f15000)
    libgcc_s.so.1 => /home/james/下載/Demo9/./lib/libgcc_s.so.1 (0x00007f6614cff000)
    (下面省略...)


2. ldd ./platforms/libqxcb.so 有提示缺少檔案
(以下節錄部份訊息)
james@james-virtual-machine:~/下載/Demo9/platforms$ ldd libqxcb.so
./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found (required by ./libqxcb.so)
    linux-vdso.so.1 =>  (0x00007ffcb4fca000)
    libQt5XcbQpa.so.5 => /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 (0x00007f5f8a6fd000)
    libQt5DBus.so.5 => /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007f5f8a67f000)
    libgthread-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgthread-2.0.so.0 (0x00007f5f8a47c000)
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f5f8a16b000)
    libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f5f89f28000)
    libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f5f89c7d000)
    libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f5f894cf000)
    libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f5f88d95000)
    libGL.so.1 => /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1 (0x00007f5f88b20000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5f88903000)
    libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f5f885c9000)
    libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007f5f883c6000)
    libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f5f881b6000)
    libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007f5f87fae000)
    libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007f5f87d93000)
    libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f5f87b71000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5f877ef000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f5f874e5000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f5f872cf000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5f86f05000)
    libxcb-render-util.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render-util.so.0 (0x00007f5f86d00000)
    libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f5f86af6000)
    libxcb-image.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-image.so.0 (0x00007f5f868f1000)
    libxcb-icccm.so.4 => /usr/lib/x86_64-linux-gnu/libxcb-icccm.so.4 (0x00007f5f866eb000)
    libxcb-sync.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1 (0x00007f5f864e4000)
    libxcb-xfixes.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0 (0x00007f5f862dc000)
    libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f5f860d7000)
    libxcb-randr.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-randr.so.0 (0x00007f5f85ec9000)
    libxcb-shape.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shape.so.0 (0x00007f5f85cc5000)
    libxcb-keysyms.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-keysyms.so.1 (0x00007f5f85ac1000)
    libxcb-xkb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007f5f858a6000)
    libxkbcommon-x11.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 (0x00007f5f8569e000)
    libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f5f8545e000)
    libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f5f85212000)
    libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5f84fa1000)
    libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f5f84d78000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f5f84b5e000)
    libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f5f84938000)
    libicui18n.so.56 => not found
    libicuuc.so.56 => not found
    libicudata.so.56 => not found
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5f84733000)
    (下面省略...)

   嘗試將libicui18n.so.56   libicuuc.so.56 libicudata.so.56 放置於./platforms/目錄下,以及將libQt5XcbQpa.so.5拷貝至/usr/lib/x86_64-linux-gnu/目錄下執行./Demo皆失敗,其中libQt5XcbQpa.so.5第一行跳錯誤訊息,但下面的libQt5XcbQpa.so.5有找到,這是怎麼回事~暈~

3. ldd /Plugins/Platforms/libqxcb.so 有提示缺少檔案
(以下節錄部份訊息)
james@james-virtual-machine:~/下載/Demo9/plugins/platforms$ ldd libqxcb.so
./libqxcb.so: /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5: version `Qt_5_PRIVATE_API' not found (required by ./libqxcb.so)
    linux-vdso.so.1 =>  (0x00007ffe15d8a000)
    libQt5XcbQpa.so.5 => /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5 (0x00007ff89edbb000)
    libQt5DBus.so.5 => /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007ff89ed3d000)
    libgthread-2.0.so.0 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libgthread-2.0.so.0 (0x00007ff89eb3a000)
    libglib-2.0.so.0 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libglib-2.0.so.0 (0x00007ff89e829000)
    libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ff89e5e6000)
    libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ff89e33b000)
    libQt5Gui.so.5 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libQt5Gui.so.5 (0x00007ff89db8d000)
    libQt5Core.so.5 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libQt5Core.so.5 (0x00007ff89d453000)
    libGL.so.1 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libGL.so.1 (0x00007ff89d1de000)
    libpthread.so.0 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libpthread.so.0 (0x00007ff89cfc1000)
    libX11.so.6 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libX11.so.6 (0x00007ff89cc87000)
    libX11-xcb.so.1 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libX11-xcb.so.1 (0x00007ff89ca84000)
    libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007ff89c874000)
    libSM.so.6 => /usr/lib/x86_64-linux-gnu/libSM.so.6 (0x00007ff89c66c000)
    libICE.so.6 => /usr/lib/x86_64-linux-gnu/libICE.so.6 (0x00007ff89c451000)
    libxcb.so.1 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libxcb.so.1 (0x00007ff89c22f000)
    libstdc++.so.6 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libstdc++.so.6 (0x00007ff89bead000)
    libm.so.6 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libm.so.6 (0x00007ff89bba3000)
    libgcc_s.so.1 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libgcc_s.so.1 (0x00007ff89b98d000)
    libc.so.6 => /home/james/下載/Demo9/plugins/platforms/./../../lib/libc.so.6 (0x00007ff89b5c3000)
    libxcb-render-util.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render-util.so.0
   (下面省略...)
      libicui18n.so.56   libicuuc.so.56 libicudata.so.56自動有找到,其中libQt5XcbQpa.so.5第一行跳錯誤訊息,但下面的libQt5XcbQpa.so.5有找到,不過依舊無法執行程序。
--
懇請Joey大神再提供方向指引,謝謝您>//<
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2017-7-14 17:28:56 显示全部楼层
Hi Joey,

謝謝您的回覆,應該是您說的那樣沒錯,
但是具體到底是怎麼回事我也不太清楚,
不過現階段問題已經暫時解決了,雖然方法不是太好,
總算是解了我的燃眉之急,也謝謝您的回覆^^

http://www.qtcn.org/bbs/read-htm-tid-63398.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了