一 開放源碼的軟體安裝和更新簡介
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這個指紋驗證機制來判斷該檔案有沒有被改動過