在windows上安裝軟件只要不斷點擊下一步下一步就行,但是無法修改軟件的源代碼,如果要增加或者減少軟件的某些功能,只能求助於當初發行軟件的廠商了。
而linux上面的軟件幾乎都經過GPL授權的,也就是說每個軟件都提供源代碼,可以自行修改程序。
何為GPL:GPL,是General Public License的縮寫,是一份GNU通用公共授權非正式的中文翻譯,保證你共享和修改自由軟件的自由。——保證自由軟件對所有用戶是自由的。
linux上真正識別的可執行文件其實是二進制文件,那麼我們如何做出一個二進制的程序呢,首先要寫程序,比如vim編寫程序,這就是所謂的源代碼,就是一般的純文本文件,在完成這個源文件的編寫後,進行編譯成os能夠識別的二進制程序,而要編譯的話自然需要編譯程序來操作。
比如使用c語言進行源代碼編寫,寫完後,用linux上標准的c語言編譯程序gcc來編譯,就可以制作一個二進制文件。
事實上,在編譯過程中還會生成所謂的目標文件,拓展名.o結尾,有的時候會在程序中調用其他的外部子程序,這時在編譯過程中就必須把函數庫加進去,如此,編譯程序就可以將us哦呦的程序代碼和函數庫做一個鏈接(link)以生成正確的執行文件。
目標文件是指源文件經過編譯程序產生的能被cpu直接識別二進制文件。 可執行文件就是將目標文件連接後形成的可執行文件,當然也是二進制的。 make configure 使用gcc編譯的過程並不簡單,如果源碼很大的話。此時可使用make命令來簡化編譯命令。 make是一個程序,當執行make時,make會在當前目錄下搜尋makefile這個文本文件,makefile記錄了源碼如何編譯的詳細信息,而makefile如何得到,通過軟件開發商都會寫一個 檢測程序來檢測用戶的操作環境。檢測程序完畢後,會新建這個makefile規則文件,通過這個檢測程序的文件名叫configure或config 那麼為什麼要檢測操作環境呢? 雖然每個linux distribution用的是相同的內核,但是內核的調用不同,而且每個軟件所需的函數庫也不同,同時,軟件開發商不僅會針對linux開發,而是會針對整個unix-like做開發 因此也必須檢測該操作系統是否有合適的編譯器,一般來說,檢測程序會檢測的數據如下: 是否有合適的編譯程序可以編譯本軟件的程序代碼。 是否已經存在本軟件所需要的函數庫或其他需要的相關軟件。 操作系統是否適合本軟件 內核的頭定義文件是否存在 也就是說,首先要執行configure來新建makefile,這個步驟很重要,然後用make調用所需要的數據來編譯即可。 由於不同的linux distribution的函數庫文件所放置的位置的路徑或者是函數庫的文件名都不相同,理論上在centos上編譯編譯出的二進制文件在ubuntu上無法執行,所以同一套 軟件要在不同平台上面執行時,必須要重復編譯,因此需要源碼。 軟件的安裝和升級 軟件的更新分兩大類: 直接以源碼通過編譯來安裝和升級 直接用編譯好的二進制程序來安裝和升級 tarball文件:一個軟件包,壓縮文件 解壓後: 源代碼文件 檢測程序文件 軟件的安裝說明(install、readme) tarball安裝流程: 下載tarball 解壓縮得到很多源文件 用gcc編譯生成目標文件 用gcc進行函數庫,主程序,子程序的鏈接,形成主要的二進制文件 將上述額二進制文件和相關的配置文件安裝在自己的主機上。