簡體   English   中英

在Linux上部署Qt應用程序二進制文件,與LSB兼容

[英]Deploy a Qt Application Binary on Linux, compatible with LSB

我已經在Ubuntu 12.04上的Qt Creator中開發了一個小型應用程序,希望它可以在其他任何Linux發行版(大多數版本的CentOS和ubuntu)上運行,就像Windows上的任何便攜式應用程序一樣。

我希望能夠簡單地共享應用程序的二進制文件,然后運行該應用程序。 通過在QT Creator中構建項目,然后將所需的庫放在Application目錄中,然后將它們轉移到其他Windows系統中,我能夠在Windows中成功完成此操作。

我到處搜索,發現我應該嘗試使用LSB(Linux標准庫)兼容性來構建該項目,以便它可以在其他Linux發行版上運行。 這是正確的方法嗎?

我對Qt和Linux都是新手(對Shell腳本了解不多)。 因此,我不知道如何繼續使該應用程序LSB兼容。

我已經參考了以下鏈接: 在Linux上分發基於Qt的二進制文件在Linux上 部署Qt應用程序,但是還無法理解我的工作。

我還在這里發現了一個與我的情況非常相似的問題,但是由於我是新手,所以我不知道該怎么做。

而且,考慮到前兩篇文章是6年前寫的,難道現在不應該有一種更簡單的方法來在Linux平台上部署Qt應用程序嗎? 我還看到了一些有關靜態鏈接的東西,這是可行的方法嗎? 是否沒有辦法可以通過Qt Creator本身完成所有這些工作?

如果沒有希望為Linux創建一個可移植的Qt應用程序,那么有一種方法,例如說一個shell腳本或某種可以組合在另一台計算機上編譯Qt項目並運行它的步驟。 比如說,下載Qt-SDK(如果不存在的話),運行qmake和make,然后運行新編譯的應用程序(如果還沒有的話),以便用戶可以僅通過運行一個腳本來運行該程序。

實際上,使二進制應用程序與任何其他 Linux發行版兼容幾乎是不可能的,因為您永遠不會事先知道發行版X中可用的庫或該庫的哪個版本。 即使在單個發行版(例如Ubuntu)中,二進制應用程序也幾乎永遠不會向后兼容,因為在Ubuntu 12.04上構建的任何東西都將依賴於該Ubuntu版本上安裝的版本庫,並且嘗試在Ubuntu 10.04上運行該二進制文件將最有可能失敗的原因僅僅是因為它沒有最新版本的glibc或其他一些必要的庫。

但是,如果您將自己限制在發行版的有限列表和發行版中,則該想法可能更加可行。 然后,您可以知道哪些庫可用於這些發行版,並以最低的公分母為目標。 我曾經維護過一個二進制應用程序,該應用程序必須支持多個發行版(Ubuntu,Fedora,OpenSUSE,SLED,Mandriva),而我要做的方式是在構建機器上安裝我所針對的最舊發行版。 這樣,二進制應用程序將鏈接到這些發行版上可用的最舊版本的庫。 除非有這樣一個庫的新主版本(這種情況很少發生,即使如此,發行版通常也會出於兼容性目的而分發以前的主版本一段時間),然后編譯的二進制文件才能與所有目標發行版兼容。

因此,針對您的情況,我將給出一個簡短的建議,使用仍受支持的最舊的LTS版本的Ubuntu(目前為10.04)進行開發,對於最近流行的發行版,您應該是相當安全的。 對於已經在Ubuntu 12.04上開發的應用程序,只要在10.04上重新編譯相同的源代碼,就應該沒有問題。 請理解,您將永遠無法與已編譯的C ++ Qt應用程序實現100%的兼容性。

如果Qt對您而言並不那么重要,則可以使用更高級別或解釋性的語言,例如Python,Java,Perl或Ruby。 使用此類語言,通常可以指望目標發行版中已安裝的語言實現。

您的問題不是Linux Standard Base,而是您是否需要特定版本的Qt(或更高版本)。

就像在Windows計算機上一樣,用戶可能安裝了任何Qt,或者根本沒有安裝。 在Windows上,比在Linux上檢查某個版本的Qt的存在要容易得多,因此編寫使體驗自動進行的安裝工具更加容易。

要解決您的問題,有幾種方法:

  1. 通知用戶您的程序需要特定版本的Qt或更高版本,並讓用戶處理問題
  2. 了解如何為要定位的每個發行版創建軟件包以及創建特定的軟件包
  3. 使用0Install或Elf Statifier之類的程序來創建包含所有必需庫的程序包/可執行文件。

后者類似於許多Windows和Mac程序所做的工作(它們包括安裝程序中所需的每個庫),但這不是Linux上的首選方法,后者在很大程度上依賴於共享庫。

在Linux中部署應用程序是一場噩夢,幸運的是,這里有一些解決方案。 檢查以下項目以構建將所有依賴項捆綁在一起的可移植二進制文件:

http://statifier.sourceforge.net/statifier/main.html

http://www.magicermine.com/index.html

http://www.pgbovine.net/cde.html

另一個解決方案是制作便攜式0install軟件包:

http://0install.net/

我推薦這種解決方案。 就我個人而言,最初的三個打包程序都存在問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM