2017-10-11 115 views
0

當我在linux上構建我的wxWidgets GUI應用程序時,您好!我甚至可以運行它,並按預期工作。複製的lib即使跨越我仍然得到一個問題Wxwidgets在另一臺計算機上運行二進制程序

./app2: error while loading shared libraries: libwx_baseu_unofficial-3.1.so.0: cannot open shared object file: No such file or directory 

:當我的二進制文件複製到其他電腦的Ubuntu並嘗試運行它,我得到這個錯誤。爲什麼它依賴於外部庫,我如何解決這個問題,因爲我不希望其他計算機需要安裝這個庫。我想我可以嘗試靜態鏈接它,但其他人建議你不要這樣做。

謝謝 丹

回答

0

你需要你的二進制文件複製到任何一臺機器上安裝整個wxWidgets的運行/共享庫。這是使用aptitude的全部要點 - 每個二進制軟件包都有一個隨它一起安裝的依賴項列表。

爲了克服這個問題,你需要靜態鏈接你的二進制文件。您正在使用共享鏈接,正如您注意到的那樣,它依賴於外部庫。 「.so」表示共享對象。您必須鏈接靜態歸檔庫,通常以「.a」結尾。典型的aptitude提供的開發包不提供這些,所以你可能需要自己編譯wxWidgets來提供這些。只要確保也靜態鏈接並編譯所有wxWidgets下游依賴關係。這是靜態鏈接的主要缺點。你可以看看Holy Build Box

+0

感謝您的回覆。我想在.deb文件中,我可以要求wxwidgets作爲依賴關係來解決問題。 –

+0

它應該確保您編譯的版本也在依賴項檢查中定義。 –

+0

我已經建立了與自定義編譯版本的wxWidgets鏈接。沒有修改,但它所尋找的庫是「非官方的」。我將「非官方」庫複製到另一臺Ubuntu PC上,但系統仍然說庫找不到? –

相關問題