接觸linux往往覺得linux得軟體安裝後非常混亂,都不知道他安裝在哪裡,自己也曾非常彷徨,現在我把自己的經驗寫出來,為大家提供借鑒。
linux c/c++語言開源軟體常使用Makefile管理,它需要configure、make、make install 3步曲來安裝軟體。對xxx.tar.gz源碼包解壓後便可以在檔案夾裡進行這3步曲。
./configure --prefix=/path-to-install
這是很關鍵的一步,它確定軟體的lib bin include等等將要安裝的位置,若不指定,預設安裝在/usr/local/bin,/usr/local/lib,/usr/local/include位置。當安裝了很多軟體後,這些目錄裡面的東西也就變得特別雜了,往往不知道檔案是屬於哪些軟體的。
make
make後c/c++檔案被編譯成.o檔案,即所謂的目標檔案
make install
將目標檔案連結成可執行檔二進位檔案,放到bin中,打包成庫放到lib中,標頭檔放到include中。若prefix指定的路徑在root許可權的目錄中,還需要使用
sudo make install
來執行。至此,源碼包也就沒用了,但可以留著下次再編譯,或以後執行make uninstall命令移除擴充的檔案。
/usr/local/bin,/usr/local/lib,/usr/local/include夾是在系統的PATH,LD_LIBRARY_PATH,C_INCLUDE_PATH,CPLUS_INCLUDE_PATH環境變數裡面的,不用編輯額外配置。
然而,為了更有條理的管理我們自己軟體,我們傾向於將軟體放在我們自己指定的目錄當中。此時我們需要配置環境變數。
bin lib include設定
export PATH=$PATH:/home/solo/tools/zeromq/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/solo/tools/zeromq/libexport C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/solo/tools/zeromq/includeexport CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/home/solo/tools/zeromq/include
共用庫管理
1 /etc/ld.so.conf預設管理/lib和/usr/lib,需調用ldconfig命令更新
2 其他路徑lib可加入/etc/ld.so.conf,需調用ldconfig命令更新
3 通過LD_LIBRARY_PATH 作者簡介
唐黎哲,國防科學技術大學並行與分散式運算國家重點實驗室(PDL)研究生,14年入學便開始接觸spark,準備在餘下的讀研時間在spark相關開源社區貢獻自己的代碼,畢業後準備繼續從事該方面研究。
郵箱:tanglizhe1105@qq.com