一 開放源碼的軟件安裝和升級簡介
1 Linux上面的軟件幾乎都是經過GPL的授權,所以每個軟件幾乎均提供源代碼,並且你可以自行修改程序代碼
2 在Linux系統上面,一個文件能不能被執行看的是有沒有可執行的那個權限(具有x權限),不過Linux上面真正識別的可執行文件其實是二進制文件,例如/usr/bin/passwd
3 程序代碼文件其實就是一個一般的純文本文件,在完成這個源碼文件的編寫之後,再來就是要將這個文件“編譯”成為操作系統看的懂的二進制文件,而要編譯自然要寫“編譯程序”來操作,經過編譯程序的編譯與鏈接之後,就會生成一個可以執行的二進制程序
4 總之,我們可以這麼說
開放源碼:就是程序代碼,寫給人類看的程序語言,但機器不認識,所以無法執行
編譯程序:將程序代碼轉譯成為機器看得懂的語言,就類似翻編者的角色
可執行文件:經過編譯程序變成二進制程序之後機器看得懂的所以可以執行的文件
5 函數庫類似子程序的角色,可以被調用來執行的一段功能函數。分為靜態函數庫和動態函數庫
6 有的時候有一堆的程序代碼文件,我們需要去手動編譯,但是很多編譯命令讓我們寫到瘋掉,這個時候我們可以利用make這個命令的相關功能來進行編譯過程的命令簡化
7 當執行make 的時候,make會在當前的目錄下搜索Makefile這個文本文件,而Makefile裡面則記錄了源碼如何編譯的詳細信息,make會自動判別源碼是否經過變動而自動更新執行文件
8 makefile是怎麼產生的呢?一般我們在當前的目前下會有一個configure,這個configure檢測程序可以找到所需函數庫,編譯器及其他資料
9 所謂的Tarball文件,其實就是將軟件的所有源碼文件先以tar打包,然後再以壓縮技術來壓縮,通常最常見的就是gzip來壓縮了,因為利用了tar和gzip的功能,所以tarball的文件一般的擴展名為*.tar.gz或者是*.tgz
10 一個軟件的tarball是如何安裝的呢,基本流程是這樣的
1 將tarball由廠商的網頁下載下來
2 將tarball解壓縮,生成很多的源碼文件
3 開始以gcc進行源碼的編譯(會生成目標文件)
4 然後以gcc進行函數庫,主程序,子程序的鏈接,以形成主要的二進制文件
5 將上面的二進制文件以及相關的文件配置安裝到自己的主機上面
二 使用傳統程序語言進行編譯的簡單范例
1 在默認的情況下,如果我們直接以gcc編譯源碼,並且沒有加上任何參數,則執行文件的文件名會被自動的設置為a.out這個文件名
2 gcc的簡易用法
1 gcc -c tmp.c
-c參數是僅將源碼編譯成為目標文件,並不制作鏈接等功能
會生成tmp.o這個文件,但是並不會生成可執行文件
2 gcc -o tmp.c -c
-o參數在編譯的時候,依據操作環境給予優化速度
會自動的生成tmp.o這個文件,並且進行優化
3 gcc tmp.c -lm
-lm指的是libm.so或libm.a這個函數庫文件
4 gcc -o main tmp.c -wall
-o tmp指定生成的可執行文件為main
-wall 會把詳細的信息列出
三 Tarball的管理與建議
1 Tarball安裝的基礎操作大多是以下流程:
1 取得源文件:將tarball文件在/usr/local/src目錄下解壓縮
2 取得步驟流程:進行新建立的目錄下面,去查閱INSTALL與README等相關文件內容
3 相關屬性軟件安裝:根據INSTALL/README的內容查看並安裝好一些相關的軟件
4 建立makefile:以自動檢測程序configure檢測操作環境,並建立Makefile這個文件
5 編譯:以make這個程序並使用該目錄下的Makefile作為它的參數配置文件,來進行編譯的操作
6 安裝:以make這個程序,並以Makefile這個參數配置文件,以及install這個目標的指定來安裝到正確的路徑
2 所謂的更新源碼只是更新少部分,很多的軟件開發商在更新了源碼之後,都會發布所謂的patch file
3 我們只要下載了patch file就能夠對你的軟件源碼更新了,只不過更新了源碼並非軟件就更新,我們還需要將該軟件進行編譯後才會是最終的正確的軟件,因為patch的功能主要是更新源碼而已
4 我們可以使用MD5這個指紋驗證機制來判斷該文件有沒有被改動過