網頁

Google Search

2014年3月23日 星期日

2014-03-23 [筆記] 實戰!中大型軟體專案開發課程 - Part1

活動網頁:
https://www.openfoundry.org/en/activities/details/431-large-oss-projects-participate

這場活動是由openfoundry主辦的。主要是針對讓學生未來面對大型專案時該有的一些想法,好啦我實在不想說太多廢話,直接進入筆記。

首先講師先叫我們去下載 pidgin (https://www.pidgin.im/) ,我們上課的環境是Fedora,所以deb系列的可能要說聲抱歉,不過大致上的邏輯都是一樣的,只是要找到對應的指令而已。

首先先把下來的檔案做解壓縮吧
tar -jxvf pidgin-2.10.9i

進去目錄
cd pidgin-2.10.9i

通常進入一個OpenSource我們都會先看說明文件(README)以及INSTALL,通常這檔案會告訴你如何把這個專案編譯起來。
所以我們再目錄底下打
./configure 

這個動作會偵測環境、相依性 、要編譯的選項
如果不知道該怎麼辦,使用 --help可以看到參數
想要更改專案安裝的位置可以修改 perfix 的位置,這樣就不會安裝到預設的位置了。

他就會開始偵測電腦環境、相依性等。
如果你沒有意外的話就會全部都是ok,然後你就可以進行下一個步驟,但是
人生中最討厭的就是這個但是,真實世界沒有這麼好康的事情,他一定會跟你說缺很多相依性的套件,你必須一個一個先把他需要用到的套件先裝上來,才有辦法把整個專案編譯起來。

這就像是天下沒有白吃的午餐是一樣的道理,想編譯成功?先把相關套件裝起來吧XD

./configure失敗時會告訴你缺少哪些套件,這時候你就打
yum search [PackageName] 
會幫你找到你要安裝的套件有哪些,缺甚麼就裝什麼,當然你要亂槍打鳥全部都安裝也不會有人阻止你。

config.log 這個檔案是用來紀錄./configure 失敗時的log,有需求的時候可以看這個檔案找出問題。

今天的實作之後,下面是要安裝的套件:
yum install intltool glib-devel gdk2-devel libXScrnSaver-devel libSM-devel gtkspell-devel globus-libxml2-devel gstreamer-devel libidn-devel meanwhile-devel gnutls-devel tcl-devel tk-devel -y

安裝完所需要的套件之後就可以再做一次./configure,再重新檢查一次。
如果檢查還是失敗就請去看看log到底是在哪裡失敗,然後google解決吧XD

檢查成功之後就執行
./configure --disable-vv --disable-avahi --disable-dbus --disable-perl

再來就執行
make

這個指令是用來自動編譯的,雖然說用gcc也可以編譯,但是太多的指令及檔案要做編譯,會花很多時間,所以就有人寫出了make來自動編譯。

那你可能會很好奇的說,make怎麼知道要去編譯哪些檔案呢?
再目錄下面會有一個Makefile去告訴make應該去編譯哪些檔案。
有興趣的話可以使用編輯器(vi / vim)或是cat、less去看Makefile,看看裡面寫了些什麼。

而Makefile必須再/configure成功之後才會產生出來,不然是無法直接make的。

make clean
把一些已經編譯過的檔案刪除,讓你可以重新作編譯

make check
自我檢查是否成功

其實還有很多啦,如果不知道效果是甚麼的話就直接try下去就知道了。
自己實作過才知道阿!!!

Note:make不是只有compile功能,還有一些其他的功能(Ex:製作document 、pdf 、etc...)

想更了解make 和 Makefile可以參考:
http://forum.slime.com.tw/thread122483.html


終於到最後一個步驟了。
make install

make只是編譯並沒有安裝,make install才會把編譯完的東西做安裝。

題外話:當權限不夠(沒有root)的時候你要怎麼辦(安裝)?
1.sudo         提權限(廢話XD)
2.chhmod   改變權限 (777)
3.chown      改變擁有者 (群組變自己)
4.perfix       改變寫到其他目錄(Ex : /home)

先說說為什麼make install 會需要root的權限?
因為當你在安裝的時候會需要w(write)寫入的權限,
而有些檔案的位置可能是在/usr/底下,所以需要root的權限去進行寫入。

1.你也可以把所有要安裝的檔案都加上777的權限,這樣在make install的時候就需要使用到root的權限。

2.更改預設安裝的位置,如果放在自己的/home目錄下面也不會有權限不夠的問題。

所以make install 並沒有強至規定說一定要使用root權限才能,沒有!而是看你的使用方式。

Note:不是make install 就一定要sudo (root權限)

好啦,以上就是如何編譯一個OpenSource專案的過程以及邏輯。
希望大家看完之後有幫助^^

------------------------------------我是分隔線------------------------------------

yum install intltool glib-devel gdk2-devel libXScrnSaver-devel libSM-devel g    tkspell-devel globus-libxml2-devel gstreamer-devel libidn-devel meanwhile-de    vel gnutls-devel tcl-devel tk-devel -y 

tar -jxvf pidgin-2.10.9i 

cd pidgin-2.10.9i
./configure

make
make install 

沒有留言:

張貼留言

歡迎大家指教 :)
如果在文章中關於技術方面有誤還請大家指證,謝謝!