簡體   English   中英

Linux編程環境配置

[英]Linux programming environment configuration

前幾天我在VM中設置了一個Ubuntu安裝,然后去收集我認為我主要用C ++編程所需的工具和庫。

我遇到了一個問題,在哪里放置第三方源庫等等。從我可以收集的內容來看,許多源代碼分發假設它們的很多依賴項已經安裝在某個位置並假設很多工具也安裝在特定位置。

舉一個我目前在Windows上做的例子,我有一個目錄,我保留所有源代碼。 C:\\code 在這個目錄中,我有一個所有第三方庫的目錄, c:\\code\\thirdparty\\libs 通過這種方式,我可以輕松地為我編寫或遇到的任何項目的所有依賴項設置相對路徑,並希望進行編譯。 我對建立Linux編程環境感興趣的原因是,似乎工具和庫依賴問題都得到了有效解決,例如從源代碼構建OpenSSH很容易。

因此,當我嘗試在linux上組織我的項目和庫時,我可以使用的是一個不錯的約定,易於維護和易於使用。

簡短的回答:不要做“本地目錄中的大量代碼”的事情。

答案很長:不要做“本地目錄中的大量代碼”的事情,因為保持最新狀態將是一場噩夢,如果你決定分發你的代碼,將它包裝成任何體面將是噩夢分配。

只要有可能,堅持分發中提供的庫(ubuntu有20000+個數據包,它應該包含你需要預先包裝的大部分內容)。 如果沒有包,您可以手動安裝到/ usr / local(但請參閱上面有關升級的信息,並且不要這樣做)。

更好的是,使用“stow”或“installwatch”(或兩者)安裝到每個庫目錄(/ usr / local / stow / libA-ver123),然后將符號鏈接文件從那里安裝到​​/ usr / local或/ usr /(stow)是simlinking部分)。 或者只是為您的發行版打包lib。

對於圖書館/包括......

/usr/local/lib
/usr/local/include

盡可能針對系統/發行版提供的代碼庫。 這使得在該發行版上發布產品變得最簡單。

但是,如果您正在構建商業應用程序,因為有許多類型的Linux發行版可能意味着您必須為每個發行版維護大量不同的應用程序構建。 這不一定是壞事,因為這意味着您可以更加干凈地與發行版的軟件包管理系統集成。

但是在你不能這樣做的情況下,下載你擁有的每個第三方依賴項的來源應該相當容易,並將該依賴項的構建集成到鏈接到你的可執行文件的靜態庫中。 這樣你就可以准確地知道你所鏈接的內容,但卻有可能縮小你的可執行文件大小。 如果您需要發行版未提供的特定庫(或版本),也可能需要這樣做。

如果你希望你的代碼可以在各種不同的Unix系統上構建,那么你可能很明智地研究GNU autoconfautomake 這些可以幫助您為項目構建configure腳本和makefile ,以便它幾乎可以在任何Unix系統上構建。

另請參閱pkg-config ,它現在在Linux發行版上使用了很多,以幫助您包含和鏈接到正確的庫(對於支持pkg-config的庫)。

如果您使用subversion來管理源代碼,那么大多數subversion存儲庫都會使用“約定”來管理自己的代碼和“供應商”代碼。

大多數svn存儲庫都有一個“供應商”樹(與樹干,分支和標簽樹一起)。 這是所有第三方供應商代碼的首選。 在該目錄中,您可以使用每個庫的目錄。 例如:

branches/
tags/
trunk/
vendor/somelib
vendor/anotherlib

每個庫下面都是每個庫版本的目錄,以及存儲庫中最新版本的“當前”目錄。

vendor/somelib/1.0
vendor/somelib/1.1
vendor/somelib/current

然后你的項目的樹應該這樣布局:

trunk / source#這里的所有代碼trunk / libs#所有供應商代碼都在這里

libs目錄應為空,但它將具有與之關聯的svn:externals元數據,通過:

svn propedit svn:externals trunk/libs

這個屬性的內容將是(假設顛覆1.5):

^/vendor/somelib/current   somelib
^/vendor/anotherlib/1.0    anotherlib

這意味着當您簽出代碼時,subversion還會將您的供應商庫檢出到您的trunk / libs目錄中。 所以當簽出時它看起來像這樣:

trunk/source
trunk/libs/somelib
trunk/libs/anotherlib

Subversion Book中對此進行了描述(可能要好得多)。 特別是關於處理供應商分支外部的部分

Ubuntu = Debian = apt-get goodness

Linux實用程序開始:

%> sudo apt-get install util-linux

暫無
暫無

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

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