首先要說一下,很多linux的發行版例如ubuntu或者centos、fedora等,是可以雙擊安裝自己發行版的安裝包的,例如deb、rpm等。
但是為什麼非要這三個命令,而不是雙擊之後自動執行上述三個命令呢?
主要還是跨平台和定製化的考慮。我們知道linux發行版眾多,linux支援的平台也很多,從使用最多的x86到arm,solaris等,所以這個./configure指令碼可以支援很多編譯引數,從而讓軟體支援幾乎所有的硬體平台。
而windows下,由於幾乎所有軟體都是編譯好的二進位制打包發布,所以軟體要麼是32位版本,要麼是64位版本不能通用的。好在windows目前只支 持x86和x64兩個硬體平台,假若以後windows支援其他平台,那麼我們日常軟體的版本區分就要更多了。而linux下只要發布乙個原始碼包,你使用者 是什麼硬體平台自己編譯好了。
另外稍微學過軟體工程的都知道,軟體開發都是模組化的,通過./configure命令加上合理引數,可以不編譯不需要的模組,比如最常用的php,自帶幾十個模組,通常我們需要哪個編譯哪個好了。
有人可能說windows安裝軟體也能選擇性安裝,我可以不安裝我不需要的模組。
其實,windows就算你不安裝你選擇的模組,那也只是這個模組不安裝。而主程式的模組訪問是編譯好的,他只不過能自動判斷這個模組不存在就不載入罷了。
另外,linux很多模組是通用的,這就是依賴關係,舉例來說要用php的iconv功能,就需要系統安裝libiconv庫,而不同的電腦的 libiconv庫安裝路徑不同,所以需要通過./configure的引數指定你電腦的libiconv安裝路徑是多少,php才能順利編譯通過。 windows則是必須在c:windowssystem32下,可定製化太差了。
再說一下make命令。make命令就是根據剛才./configure的配置引數,來把原始碼編譯成二進位制檔案,放到當前目錄,而不是複製到系統目錄。為什麼不能把make和make install放在一起呢?
因為有些時候,我們只需要乙個軟體包裡面的某個動態鏈結庫,而不是整個程式。比如我們經常需要lighttpd中的spawn-fcgi,所以我們不必安裝lighttpd,而是直接編譯完,得到其中的spawn-fcgi即可。
最後,make install就是把編譯好的二進位制檔案和鏈結庫、配置檔案等複製到系統的各個目錄即可,安裝完成。
說道這裡,可能有些網友根本沒看上面文字,就說:普通使用者不需要知道這麼多,他們就需要知道怎麼用就行了。是的,話說回來了,這些人如果不用windows,完全可以嘗試ubuntu或者fedora,這兩個發行版都可以雙擊安裝程式。但是缺點就是無法深度定製。
我們暢想一下,如果qq有tar.gz原始碼版發布,那麼我希望的安裝命令是:
cd qq2016/./configure --without-ad --without-qqshow --without-popnews --without-qzone --with-ipaddress --with-showip
make;make install
為什麼linux平台下軟體安裝不是雙擊執行
首先要說一下,很多linux的發行版例如ubuntu或者centos fedora等,是可以雙擊安裝自己發行版的安裝包的,例如deb rpm等。但是為什麼非要這三個命令,而不是雙擊之後自動執行上述三個命令呢?主要還是跨平台和定製化的考慮。我們知道linux發行版眾多,linux支援的平台也很多,從使...
Linux平台下安裝MySQL
2.解壓 tar xvf mysql 6.6.13 1.rhel5.i386.tar 3.切換root使用者 su 4.安裝server 5.5 rpm ivh mysql server 5.5.13 1.rhel5.i386.rpm 5.更改密碼 usr bin mysqladmin u root...
Linux平台下常用軟體安裝方法總結
size small linux下軟體安裝包主要有以下三種 1 tar包,如software 1.2.3 1.tar.gz 它是使用unix系統的打包工具tar打包的。2 rpm包,如software 1.2.3 1.i386.rpm 它是redhat linux提供的一種包封裝格式。3 dpkg包...