2017-02-17 87 views
0

我正在開發一個跨平臺的C++應用程序,並暫時我處理得到它在Linux下運行一個領域,我有一點經驗。這個應用程序使用像Poco和Boost這樣的第三方庫來舉幾個例子。我正在開發一個Ubuntu桌面版本,我已經動態構建了它們,它們的頭文件包含在usr/local/include中,而.so文件位於usr/local/lib目錄。
如果我要發佈這個程序是它足以只包我的源代碼(可執行文件)+報文頭和第三方庫或SO2的文件在應用程序的接收到他的機器上安裝這些庫,以及應用程序執行?部署Linux C++應用程序分配與第三方庫

+0

爲什麼你認爲你需要與你的應用程序二進制分發CPP和頭文件? – IInspectable

+0

首先閱讀所有使用的庫的許可證。 – deviantfan

+2

作爲一個有幾個Linux發行版打包的人說話:只打包自己的代碼,然後提供清楚的文檔,說明必須安裝哪些依賴項來編譯和安裝自己的warez。如果您提供自己的RPM規格文件或任何APT需要做的等效物,作爲您自己的軟件包的一部分,請提供免費布朗尼積分。 –

回答

1

檢查許可證的第三方代碼。如果是GPL,請在下載時包含源代碼tarball。這很簡單,因爲它不會讓你以後對任何事情負責。否則,如果Debian/Ubuntu在六年後將其歸檔鏡像關閉了,您仍然有責任爲請求它的任何人提供源代碼。

然後考慮讓你的代碼放到一個獨立的Linux應用。你可以通過將你需要的所有共享庫放到你的目錄中。您可以選擇定義邊界的位置。你可能會決定你可以依靠系統的C庫,OpenGL,SDL等,而不需要捆綁這些。

然後創建一個使用$0(即sh變量,即腳本的全名)的shell腳本來找出它的運行位置。將LD_LIBRARY_PATH設置爲dirname "$0",然後exec realprogram [email protected]

如果這樣做,您的代碼就可以在很長一段時間內在系統上運行。看看Quake 3是如何爲Linux打包的,它是這樣做的。

+0

所以糾正我,如果我錯了,用這種方式在我的例子可以繞過閱讀usr/local/include,因爲我無法在IDE或Makefile中找到一種方法,我發現這個文件夾從構建過程中排除 – dk13