我想在Linux和Mac上打包/部署一個Qt應用程序。 (Qt 4.8)。由於許可類型,我必須使用共享庫。在Mac OSX和Linux上部署Qt應用程序,我需要在包中包含哪些庫?
在Linux中,下面的Qt documentation,我跑ldd myprogram
,並得到一個輸出像
linux-gate.so.1 => (0xb76fa000)
libOneOfMyLibs.so.1 => /usr/local/lib/libOneOfMyLibs.so.1 (0xb76d7000)
libQtGui.so.4 => /usr/lib/i386-linux-gnu/libQtGui.so.4 (0xb5440000)
libQtCore.so.4 => /usr/lib/i386-linux-gnu/libQtCore.so.4 (0xb501a000)
.......
libgpg-error.so.0 => /lib/i386-linux-gnu/libgpg-error.so.0 (0xb4316000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb4fba000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb4f9c000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb4df0000)
libcups.so.2 => /usr/lib/i386-linux-gnu/libcups.so.2 (0xb4d91000)
libsqlite3.so.0 => /usr/lib/i386-linux-gnu/libsqlite3.so.0 (0xb4cbb000)
libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb4cb6000)
libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb4c99000)
libfontconfig.so.1 => /usr/lib/i386-linux-gnu/libfontconfig.so.1 (0xb4c56000)
libaudio.so.2 => /usr/lib/i386-linux-gnu/libaudio.so.2 (0xb4c3c000)
libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb4b41000)
libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xb4b14000)
libfreetype.so.6 => /usr/lib/i386-linux-gnu/libfreetype.so.6 (0xb4a67000)
libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xb4a16000)
.....
非常多的依賴關係,只有他們中的一些的Qt庫。但之後他們說,既然不能確定安裝的程序將運行什麼,我應該打包所有的庫依賴關係。
還有很多!我絕對需要一些像sqlite3一樣的。我還讀到libfreetype和libfontconfig是必需的,因爲它們可能在新系統上不同。
我怎麼知道哪些庫是必需的?我應該包裝所有這些嗎?
mac directions只顯示我必須添加Qt庫。即便如此,在Mac上列出的依賴,我得到
myprogram.app/Contents/MacOS/myprogram:
libOneOfMyLibs.1.dylib (compatibility version 1.0.0, current version 1.0.0)
/usr/local/lib/libsqlite3.0.dylib (compatibility version 9.0.0, current version 9.6.0)
/usr/lib/libcups.2.dylib (compatibility version 2.0.0, current version 2.8.0)
QtGui.framework/Versions/4/QtGui (compatibility version 4.8.0, current version 4.8.6)
QtCore.framework/Versions/4/QtCore (compatibility version 4.8.0, current version 4.8.6)
....
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 832.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11)
在mac上 - 做我需要補充的libstdC++ 6.dylib和休息。?
從Qt的documentation:
「應用程序包中包含的應用程序可執行文件以及 相關性,如您可能需要Qt庫,插件,翻譯和其他 資源,如Qt的第三方庫通常不是安裝在系統上的 ;每個應用程序都提供它自己的副本。「
總結我的問題:
如果我不想做出我想要部署,做我需要添加所有的系統庫的依賴,或僅Qt庫系統做任何假設,或者......我必須將這些庫添加到我的包中?
你可以看到這篇文章的Linux部署︰http://stackoverflow.com/questions/25967340/how-to-create-a-qt-application-for-all-unix-versions/25967872#25967872 – Nejat 2014-09-25 04:06:18
謝謝 - 它仍然沒有說明應該或不應該要求的依賴庫。 – Thalia 2014-09-25 14:28:44