星期二, 12月 25, 2007

裝潢全記錄(一)第一個月

第一週
12/19(三)開工,主臥、客廳工程、庭院雜草清除(庭院那一整根路燈是否拆除)
12/20(四)主臥、客廳工程+鋁窗拆除
12/21(五)客廳、主臥地板泥水,鋁窗拆除(不乾淨);清運。社區圍牆修補(需改進)。
12/22(六)停工
12/23(日)拆踢腳、釘子(考慮作白板、陽台曬衣架)
第二週
12/24(一)量窗戶
12/25(二)加訂作書房雙層書櫃。無進度。(投影機預留與布幕要記得)
12/26(三)依然無進度,到竹北看了投影機、布幕與音響。
12/27(四)沒進度ing…,據說明天會把窗戶裝好,希望不是急就章的作法,犧牲品質。晚上繼續去巨典談音響跟投影機。
12/28(五)鋁窗進度:主臥氣密*1、書房氣密*2、客房氣密*1、客廳落地窗*1,以上窗框皆以立完。中午同巨典彭大哥+吳姐討論音響、冷氣、布幕的位置,作了重大的變更。原本天花板作四面環繞的間接燈,因為冷氣跟音響的關系,改成作L型的間接燈(廚房那面+靠房間那面),原本落地窗上面改成梯型的天花板。(由於喇叭的體積稍大,所以有可能會懸空。)所以現在冷氣跟三支喇叭會在同一個平面上。
另外,主臥的鋁門改成三合一形式。還有主臥的木門最後決定不更動。
另外主臥那支水管要牽到外面去。然後客廳水管要牽到拿裡去還沒決定。
注意事項:
* 然後主臥積水問題有可能會漏水到B1機車停車廠。
* 庭院陽台水管牽移工程可跟管委會請款。
* 庭院陽台牆面外觀需修復。
下一週的進度預計是泥水師傅會把窗框水泥補好。還有客廳地板補平。主臥地板補平。
12/29(六)無進度
12/30(日)無進度
第三週
12/31(一)客廳水管移位、主臥水管移位。
2008
1/1(二)客廳落地水泥修補(未完)、客房窗戶水泥修補(未完)、書房窗戶水泥修補(未完)、主臥地板水泥鋪平(未完)
1/2(三)無進度
1/3(四)客廳地板、牆面粗胚、客房窗邊粗胚、書房窗邊粗胚、主臥地板、窗戶粗胚、插座移位至牆邊
1/4(五)客廳地板、牆面鋪平、客房窗邊修平(尚有細綘)、書房窗邊修平(尚有細縫)、主臥地板鋪平、窗戶修平、主臥鋁門立框,客房冷氣洗洞、主臥冷氣洗洞、客房冷氣洗洞。
1/5(六)部分冷氣配線
1/6(日)無進度
第四週
1/7(一)主臥水龍頭更換、書房客房窗戶外圍補平、書房窗戶(內)角未補平、書房、主臥冷氣配線、主臥鋁門底部水泥鋪平
1/8(二)進度緩慢、工人很牛 ,動作很慢,幾乎跟昨天一樣,沒有明顯進度。原本預計木工要進料。被泥水延遲時間!
1/9(三)泥作進度依然緩慢,為什麼補個窗戶會這麼困難呢?今天作了主臥外面的地板挖除,花園花台清潔、客廳、主臥、客房、書房的地板清掃(沒有非常乾淨)、矽酸鈣板進料,長木板進料。
1/10(四)木工下角料,天花板木框接近完成,不過很可惜,投影幕的長度弄錯了,要留280,他只留了230,需修正。客廳落地外的地板。窗戶修補接近完成,不過還是有小洞。今天去巨典留了一萬塊訂金。
1/11(五)投影幕的外框已修正。不過天花版仔細看看好像不是很平的感覺,希望不是視覺的「效果」。冷氣的框已補。餐廳部分已封板。彭老闆訂投影機架時發現有漏水,已用塑鋼土補起來,之後是否有漏水,需觀察,不過音響線及hdmi線已拉好。發現幾個小問題:
一、落地窗前新鋪的地磚,底下沒有鋪實,有空心磚,已經有裂縫。
二、
主臥外面的水龍頭會滴水,很慢,好像很久會滴一滴,請確認。
三、
主臥鋁門上面部份的框與頂上的天花板有水泥沒補。
四、
鋪主臥跟書房間的U型管鋪太低?
五、冷氣洗洞的時候似乎有洗錯的小泂需補。
六、
原先有補水泥的地方有裂縫(如主臥上方的天花版)
1/12(六)無進度
1/13(日)無進度

星期五, 12月 21, 2007

開始裝潢了

2007-12-20裝潢日誌
先破壞在建造,希望一切都能順利!

星期二, 12月 18, 2007

當有錢人有什麼好?

前一陣子讀到倪弟兄的一段話。他說:在聖經中,對於有錢的人多半是被責備的。
稍微查了一下,果真如此!不過,看起來是態度的問題,有錢並不是壞事,壞就壞在人有了錢之後,對錢財的態度有問題。

財主
太 19:23 於是耶穌對門徒說,我實在告訴你們,財主進諸天的國是難的。
太 19:24 我又告訴你們,駱駝穿過鍼的眼,比財主進神的國還容易。
可 10:25 駱駝穿過鍼的眼,比財主進神的國還容易。
路 18:25 駱駝穿過鍼的眼,比財主進神的國還容易。
有錢財的人
可 10:23 耶穌周圍一看,對門徒說,有錢財的人要進神的國,是何等的難!
路 18:24 耶穌見他甚是憂愁,就說,有錢財的人要進神的國,是何等的難!
瑪門
太 6:24 沒有人能事奉兩個主;因為他不是恨這個愛那個,就是忠於這個輕視那個。你們不能事奉神,又事奉瑪門
路 16:13 沒有一個家僕能事奉兩個主;因為他不是恨這個愛那個,就是忠於這個輕視那個。你們不能事奉神,又事奉瑪門
富足
路 6:24 但你們富足的人有禍了,因為你們充分的受了你們的安慰。
路 12:21 那為自己積財,對神卻不富足的,也是這樣。
提前 6:17 你要囑咐那些今世富足的人,不要心思高傲,也不要寄望於無定的錢財,只要寄望於那將百物豐富的供給我們享受的神;
雅 1:11 太陽升起,熱氣薰烤,草就枯乾,花也凋謝,美容就消沒了;那富足的人在他所行的事上,也要這樣衰殘。
雅 2:6 你們反倒羞辱貧窮的人。那富足的人豈不是欺壓你們,拉你們到法庭去麼?
雅 5:1 嗐,你們富足的人,應當為那將要臨到你們的悲慘哭泣號咷。
啟 3:17 因為你說,我是富足,已經發了財,一樣都不缺;卻不知道你是那困苦、可憐、貧窮、瞎眼、赤身的。
財寶
太 6:19 不要為自己積蓄財寶在地上,地上有蟲蛀、鏽蝕,也有賊挖洞偷竊;
太 6:20 只要為自己積蓄財寶在天上,天上沒有蟲蛀、鏽蝕,也沒有賊挖洞偷竊。
太 6:21 因為你的財寶在那裏,你的心也必在那裏。
太 19:21 耶穌對他說,你若想要完全,就要去變賣你的家業,分給窮人,就必有財寶在諸天之上,你還要來跟從我。
可 10:21 耶穌看著他,就愛他,對他說,你還缺少一件:去變賣你所有的,分給窮人,就必有財寶在天上,你還要來跟從我。
路 12:33 要變賣你們的家業,施捨給人;為自己豫備永不舊的錢袋,用不盡的財寶在諸天之上,就是賊不能近,蟲不能蛀的地方。
路 12:34 因為你們的財寶在那裏,你們的心也必在那裏。
路 18:22 耶穌聽見了,就對他說,你還缺少一件:要變賣你一切所有的,分給窮人,就必有財寶在諸天之上,你還要來跟從我。
雅 5:3 你們的金銀都鏽蝕了,這鏽要作見證,定你們的罪,又要像火一樣,喫你們的肉。你們在末後的日子積蓄財寶

星期五, 12月 14, 2007

ELF檔中的special section

.bss
此區塊置放未初始化的資料。通常在程式開始執行時,此區塊會被清為零。此區塊並不佔位置。
.comment
此區塊存放版本訊息。
.data和.data1
此區塊置放已初始化的資料。
.debug
此區塊存放除錯訊息。任何.debug開頭的區塊都被保留,為著未來的使用。
.dynamic
此區塊存放動態鏈結資訊。
.hash
此區塊存放符號雜湊表。
.line
此區塊存放行號資訊,以便在除錯時使用。所謂行號資訊指的是機器碼與程式原始碼的對應關系。
.note

.rodata和.rodata1
此區塊存放惟讀訊息。
.shstrtab
此區塊存放區塊名稱。
.strtab

.symtab
此區塊存放符號表。
.text
此區塊存放程式的可執行部分,主要是指令。

星期一, 12月 10, 2007

是否我將失去妳

當禱告聲歇…
欲起身離去時,我遞過去的單張,妳卻不伸出手來接。
心中微蘊,還已為妳小姐脾氣上來。
卻聽到妳虛弱的說著,我手抬不起來…
不規律的心跳,讓我亂了方寸。

大家緊張了,看到妳勉強著呼吸,手腳彷彿失了主見。
送急診。
抬妳到門口,連穿鞋子的力量都沒有了。

在車上,在我懷裡,不禁想著,是否我將失去妳。
是否,在我懷裡,要把妳帶走。

在妳耳邊說著…

「我愛妳」,是我惟一能說的安慰。
「主耶穌」,是我惟一的信心。

急診室中,能在看見妳的笑容。
在病床上,能在看見妳臉上的紅潤。

這一年…真的倦了。
這一年…真的辛苦了。

謝謝妳~

星期五, 12月 07, 2007

Linker Script概觀

為了幫助自己更了解linker script我作了一個自己看的懂的中文翻譯。
原文在此
==========================================================
Linker Script概觀
為了要介紹linker script語言,我們必需先定義一些基本觀念和我們所用到的字彙

Linker作的事情就是把許多輸入給linker的檔案結合成一個檔案後輸出。
這些輸入的檔案和輸出的檔案都具有特殊的資料格式,就是我們常聽到的目的檔格式(object file format)。具有這種格式的檔案我們稱之為目的檔(object file)。Linker輸出的檔案常被稱為執行檔(executable),但有時若我們有別的用途,我們也只稱它是目的檔。 目的檔中含有一連串的區塊(section)(當然還有別的東西)。在我們提到一個在輸入檔案中的區塊時,可稱之為輸入區塊;反之,在輸出檔案中的區塊稱為輸出區塊。

每一個區塊在目的檔中,都有自己的名字跟大小。大多數的區塊都有一些相關的資料段,這些資料段也稱為區塊內容(section content)。若一個區塊被標記為"可載入的",那表示當輸出檔案為可執行的時候,區塊的內容可被載入到記憶體中。如果一個區塊是沒有區塊內容的話,那可能表示此區塊是"可配置的",這表示記憶體必需被留出一段空間給這區塊,但是可能沒有特定的東西需要載入到這裡。(有些情況下這裡的記憶體會全部被清為零)。而如果一個區塊既不是"可載入的"也不是"可配置的",那它可能含有某種的除錯訊息。

每一個"可載入的"輸出區塊或"可配置的"輸出區塊都有兩種位址。第一種是VMA,也就是虛擬位址(virtual memory address)。 若輸出檔案是可執行的,則區塊就具有此位址。第二種是LMA(Load Memory Address)。這表示該區塊會載入到的地址。在大多數的情況下,這兩個地址都常相同。 舉個例子來說,當區塊先被載去到ROM裡面,然後當程式開始執行時,此區塊會被複製到RAM裡面(此技巧常用在ROM-based的系統中),則在此例中,LMA和VMA就不相同了,ROM的位址是LMA,而RAM中的位址是VMA。

我們可以使用objdump -h來看一個目的檔中有多少區塊。

每一個目的檔中也都有一連串的"符號",就是我們常聽見的"符號表"。一個符號可以是已定義的,或是未定義的。每一個符號都有一個名字,而每一個已定義的符號除了名字之外還有位址和其他資訊。如果你把一個c或c++的檔案編譯成目的檔,你會發現每一個已定義的全域變數、靜態變數和函式都有一個已定義的符號。任何在輸入檔案中所參照(reference)的未定義全域變數跟函式即為未定義符號。

我們可以使用一個目的檔的工具nm或objdump -t來看目的檔中的符號。

星期四, 11月 29, 2007

Paul & Samuel


在我去跟David表明去意的隔天,剛好在餐廳碰到了Samuel。
他不經意的說了句,等下要去丟炸彈。
當時我還聽不懂,後來才曉得。

嘿~沒想到他跑的還比我快…
Posted by Picasa

星期一, 8月 20, 2007

Virtual address和virtual memory

學os這門學問真的要從最底層開始了解起,包括硬體和軟體。以前看恐龍本在看到memory management跟virtual memory這兩章之後,突然會覺得學了很多東西突然不踏實起來,而且有時候不僅是不踏實,甚至會覺得很混淆。
特別是cache、write buffer、TLB、mmu、physical memoyy、logical memory…等名詞突然放在一起的時候。所以以前大學的時候碰到考試就是把圖背起來,然後把一些經典考題練習的滾瓜爛熟,去考試都還算ok。
直到開始工作後,玩了一些架構(mips跟arm)後,這些觀念才比較清楚。
簡言之,最單純的系統就是cpu只看的到physical address的系統,缺點就是每一個process在memory的address都要算的很精準,彼此不會overlap,不然系統可能會crash。為了避免這種缺點,有人認為可以在physical address之外另外建立一個虛擬的address,然後程式在cpu執行的時候只認這個address,可以把這個address叫作logical address或是virtual address。這樣一來,就需要有一個角色來轉換這兩種address,把virtual address轉換成physical address或是把physical address轉換成virtual address。這個角色通常是一個硬體(我還沒看過軟體的)的relocation register。這樣一來,我們還是可以像之前所提的那個最單純的系統一樣,在physical address放了不同process彼此不會互相影響,但是cpu在執行這三個process時,他們可能都有相同的virtual address(但是每個process都有不同的physical address,比如說是:0x604000、0x804000、0xA04000),比如說是0x004000。這一來就會有一個好處,在執行一個process時,cpu跟本就不知道其他process是在physical address space的哪個位置。這樣對其他未被執行,但存在在physical memory裡面的process反而是一種保護。因為你不去查relocation register的值,跟本就不知道其他process實際的physical address是什麼。
這就是virtual address的由來,因為多了一個virtual address space對process的管理有一些額外的好處。
至於virtual memory,則是一種技術,讓你的process可以超過你所擁有的的實際記憶體大小。

需要file system嗎?

一個file system對user來說是除了gui外,最接近整個系統的地方。但是,對一個embedded system來說,通常只會有一個user(可能就是RD本身),或跟本就沒有user。因此,對embedded system來說,可能跟本就不需要一個file system來管理「多個」檔案,來「隨時建立」建立檔案,來設定不同檔案的權限…等等。它可能僅需要預先規畫好數個固定用途的檔案,而且寫死在程式裡面。這些固定用途的檔案可能是一些系統參數、系統憑證…等資訊。
這樣看來,一個embedded system,可能只需要一個簡單的file system,甚至不需要file system。
如果從這個角度來看,似乎許多unix-like的系統,都不太適合拿來當embedded system的os。
因為很多從multi-user的角度來設計的地方,用在embedded system上,似乎都顯得多餘了。

星期五, 8月 17, 2007

驚奇的演出

這算是第三次正式上台的表演吧。有了上次公演的經驗,這次第一首歌(單純的信託)因為已經表演過了,而且主要也不是我唱,所以我自認為表現的很好,也比較沒有害怕的感覺。反正就是專心把和弦彈出來就是了。
至於第二首歌(起初的愛),還是免不了有一點生澀,因為練習的還不夠。比較特別的是跟施孝榮大哥的合作。他是快到節目開始的時候才來,而且在正式演出前,我們還沒有一起合過。所以也不知道兩個人要怎麼一起來唱這首歌。
到我們要開始上台表演前,我們大概只有不到半小時的時間一起討論,前前後後也就是合過兩次左右就上台去了。
這不合還好,一合之後我就嚇到了,這個時候才知道專業跟業餘的差別,我們大概才把和弦講完,開始合奏的時候,他已經可以配上伴奏了。真是~太強了啦~~
我覺得我還在驚訝於施大哥專業的實力時,就已經上台了。
Anyway,這真的是一次驚奇的演出!
能夠跟施弟兄一起唱馬弟兄的歌曲,Praise Lord!
看來我這種難登大雅之堂的歌聲和技術,還有的練習咧!

星期四, 8月 09, 2007

青職問題一籮筐-家電篇(修正版)

買房子不僅僅是買房子。還要買房子裡面的東西。
現在租別人的房子沒什麼感覺,因為會用到的家具大概房東都有預備了。
最近在想買了房子以後還有什麼東西要買,這不想還好,這一想就覺得怎麼這麼多東西要花錢…
如果分成食衣住行來看,我們需要什麼家電,大概是這樣看:
食:
都是一些廚房用品,包括炊具跟碗盤。瓦斯爐:一萬。烘碗機:五千(也許不需要)。洗碗機:五萬(是我想太多了…)。調理機(馬力強的果汁機,已經有了)。 烤箱(已經有人送了~感謝主)。麵包機(已有)。抽油煙機:一萬(這個很重要!)。碗盤(已經有人送了~感謝主)。鍋具(不齊,可能還要買快鍋、炒鍋、大 湯鍋…):算個二萬好了。還有冰箱:用480升來算大概是五萬。
衣:
要買個洗衣機,想買好一點的,買個滾筒式的,日韓系的大概二~三萬,歐美系的好像要四~五萬,我原本還以為不到一萬就解決了,沒想到…是我太天真了。
其他的應該是一些雜項吧~像是衣架、曬衣架…之類的。
住:(主要是空調)
以冷氣為例~大多是用分離式冷氣,因為窗型的實在滿吵的。至於要裝哪一種的,還要考慮到房子的格局,跟大小。以3 房兩廳為例,每一間房間加客廳都要裝冷氣如果買兩台一對二的,這樣十萬就沒了。
吸塵器+電扇:3萬。熱水器:一萬五。
沙發、桌子之類的就歸在家具類了。
行:
行的話應該不在家裡面,不予計算…
整個算一下大概是34萬,可以全部買齊,而且是最高級。如果扣掉一些可能不需要的東西,大概是23.5萬,所以整個購屋成本裡面,家電可能將近佔十分之一的比例,不能小看啊!
少算了這一塊可能買了房子之後有一年要睡地版吧…

星期三, 8月 08, 2007

MINIX與我

基本上,我是LINUX開始紅了之後,才認識MINIX的。因為在讀LINUX發跡的過程中,一定會提到LINUX最早是在MINIX上開發的。是到了某一個時間之後,LINUX才自己獨立。而不用寄宿於MINIX上。
基於MINIX的設計精神-「Simplicity is beautiful」,在摒除效能至上,程式碼精簡這些有礙學習的因素外,MINIX的出現的確對CS的莘莘學子來說是一大福音。畢竟,在學校上的os多半只是理論跟原則,沒有自己親自設計、撰寫一個系統,老實說,還真的搞不太清楚,老師講的這些東西到底要怎麼用。
離開學校數年後,有些機會跟一些學弟妹聊聊,發現現在的狀況好像還是差不多,不知道是不是因為這樣教學環境的關系,台灣cs畢業的學生,對os一知半解的情況下,也很難寫出幾個有名的os。
過了數年後的今天,由於對OS的熱誠依然不減的情況下,選擇MINIX來當作一個入門的地方實在是一件令人興奮的事。畢竟,Linus也是走過相同的一段路呢!

星期二, 8月 07, 2007

The MINIX book

Tanenbaum這個作者,是我在準備考研究所時,在補習班上課的時候聽老師提到的。那個時候才知道原來os不只有恐龍書之外,還有一本不錯的書叫作「Modern Operating Systems」,作者就是Tanenbaum。後來我才知道,他寫的書大多是美國大學院校排行榜上有名的教科書。後來,陸續的的買了「Computer Networks,4th」(上電腦網路這門課常用的教科書)跟「Structured Computer Organization, 5th」(計組常用的教科書,其競爭對手就是台灣常用的白算盤本了)。
剛開始的時候,我實在是搞不清楚,為什麼在美國教科書排行榜上常常是屬一屬二的教科書,怎麼在台灣卻有點名不見經傳的感覺。
後來在我開始讀他的書的時候,我大概就有點了解了。
(為什麼這樣講,其實買書前我是大概看了看,覺得內容還滿不錯的就買了。就好像Knuth的書一樣,先不用管看不看的懂,先買一套回家在說。)
我發現我的英文單字量是一個很大的問題!!
因為,他的英文語句的變化滿大的,用的詞彙又很豐富,對美國人來說,大概會認為這個教授用詞活潑,很貼近他們,但我們這些外國佬就看的滿吃力了。其實,讀原文書也好幾年了,也有好些書是不太需要查字典了。沒想到碰上Tanenbaum之後,我就投降了…
以我最近開始讀的The MINIX book為例,才讀第一章的導論而已,就有將近四成的時間在查字典跟揣摩語意。這大大降低閱讀的速度。我在想,如果大學的時候用這種書來當教科書,那可能會有一票人放棄os…
Anyway,我不認為這個「缺點」會影響這本書的價值。
畢竟,以os的「實作」來寫書的書在市場上實在是太少了。

閱讀

前一陣子,遠見雜誌作了一份調察,調察的結果大概是這樣:
四個成人裡面,有一個人是不看書的。
一個成人,一週閱讀的時間大概是3個多小時,看電視的時間接近17小時,上網是7個多小時。
對此,我不敢作任何評論,但是我很感謝主,從小就讓我培養了很好的閱讀習慣。
即使現在上班了,每天都還是有一到二小時的閱讀時間。

青職問題一籮筐-房事篇

結婚前也沒什麼特別歸畫要買什麼房子,心裡總有一個想法覺得那是很久遠的事,在加上剛入職場時,看了一些文章講到財產的配置,對買房子這種要花掉幾十年賺的錢的事,實在是興趣缺缺。
而且,剛成家時,手邊能用的錢實在是不多,不過還好我們租了一層公寓有自己的廚房,不常外食,而且加上分租給其他弟兄的關系,食、住的花費就沒這麼大了。
但隨著週圍的弟兄們一個接著一個的成家,跟我們住的單身弟兄也將在近日成家,還有三不五時,閃過「太晚懷孕將導致胎兒xx」的新聞,將購屋的念頭成功地往上拉了好幾個順位。
因為很多人都不想在懷孕的時候搬家。而且,對於我們現在住的公寓實在有些許的不滿,包括格局的配置,東西的擺設…等等。但是畢竟不是自己的房子,有些地方亂,也只能讓它亂了,因為不是自己的房子,所以也沒辦法作整體的歸畫,想新購一些家具,又怕日後搬家,又要在搞一次,勞民傷財,實在是划不來。
但是開始找房子後,考慮的東西就又更多了。
首先是價格,當然最重要的也是價格。
我不想說太多,總之,我們想買的房子,買不起!我們有的錢,只能買到我們不想買的房子。
在來,是格局、樓層、地點、週邊環境…等等。總之,考慮的東西很多啦~
無論如何,還是擺在禱告中。看主怎麼開路。

星期四, 5月 03, 2007

婚紗照

婚妙照

5/19(六)別忘了喔~
下午3:30開始有結婚見證聚會。
晚上6:00開始喜宴喔!

星期四, 3月 22, 2007

結婚聚會、喜宴網路邀請卡

親愛的親朋好友、弟兄姊妹們:

誠心的邀請你們來參加伯鈞跟盈潔的結婚聚會跟喜宴。
希望您5/19能撥冗前來,謝謝您的扶持。

結婚聚會不管是不是基督徒都可以參加的。
沒有參加過教會婚禮的你們,一定要來喔!

婚宴的時間、地點、地圖資訊都可以在我的相簿裡找到。
有任何問題,歡迎您用任何方式連絡我們。

結婚聚會(不收禮金):
5/19 下午3:30於台北市召會十會所舉行。
2:30pm到~3:20pm 入場
3:20pm~3:30pm 會前禱告
3:30pm~5:00pm 聚會
5:00pm~5:30pm 會後合照

結婚喜宴(收禮金):
5/19 下午6:00於滿庭春珍饌茶樓舉行。


寄件者 婚宴相關照片

星期三, 3月 07, 2007

Cross compiler

最近弄cross compiler真是苦的要命。
簡單說,要build一個cross compiler,必需對gcc、binutils有相當程度的了解。
還有,要編譯前可不是打一個make下去就好了。make前的configure也是很麻煩。不管是binutils還是gcc,組態的參數超多,只能抱著網上的文件,慢慢k了。
在來就是make的問題了,在make前許多事前的準備工作都要作好,尤其是configure時設的選項一定要懂,不然make到一半才知道問題,那幾乎就要重來。
不過呢?重來倒也還好,重點是「時間」。
編譯binutils大概十來分鐘,但是,編譯gcc就不是十來分鐘就解決的事情。我只要c,c++的compiler編譯時間大概就要3個半小時,約200分鐘。漫長的等待是無所謂,怕就怕編譯到一半,突然停了,make error在去debug或是找patch那就真的麻煩了。
我的心得是,要善用google跟mailing list,通常比較容易找的到答案。
舉例來說,在編譯gcc時,我參考別人configure的參數--with-newlib,其實我一開始也不知道是什麼,而且gcc的文件說明我看了等於沒看,因為上面給的訊息太少了。經過幾次make error之後(我的數十個小時啊…),我開始懷疑是newlib的問題,這時去找才發現,原來newlib是一個給embedded system用的standard c library。但是問題並沒有完全解決。因為在編譯gcc 4.1.2+newlib 1.15.0時,居然make不下去。還好用google找到newlib的mailing list,也有人有同樣的問題,需要patch gcc的Makefile.in才行。
Anyway,問題已經解決了。
在我還沒有找到適合的網路空間時,我就先把解決方法貼上來好了。
====README================================================
This directory contains source code of cross compiler tool-chain.
The following verisions we used:

GCC 4.1.2
Binutils 2.17
Newlib 1.15.0

Directory Structure
===================
README: This document
build.script: Toolchain building script, use --help to get help information.
src/: Source code directory
binutils/: Symbolic link to binutils' source directory
gcc/: Symbolic link to gcc's source directory


Toolchain building steps:(gcc 4.1.2, binutils 2.17, newlib 1.15.0)
Step 1: Fecth source from the internet
You can use following commands to get the source code.
wget ftp://ftp.gnu.org/pub/gnu/binutils/binutils-2.17.tar.bz2
wget ftp://ftp.gnu.org/pub/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
wget ftp://sourceware.org/pub/newlib/newlib-1.15.0.tar.gz

Step 2: Uncompress tarball
You can use following commands to uncompress source code tarball.
cd src
tar zxvf filename.gz or tar jxvf filename.bz2

Step 3: Establish symbolic link for each feather under directory src.
ln -s gcc-4.1.2/ gcc
ln -s binutils-2.17 binutils

Step 4: Deal with newlib's related things...
When we compile gcc we will enable option '--with-newlib', we shall add two
symbolic link under gcc directory.
cd gcc
ln -s ../newlib-1.15.0/newlib newlib
ln -s ../newlib-1.15.0/libgloss libgloss

Step 5: Patch gcc's Makefile.in
If we don't modify the Makefile.in, error occurs when we compile newlib.
-CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
+CFLAGS_FOR_TARGET = $(strip -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET))

-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)
+CXXFLAGS_FOR_TARGET = $(strip $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET))

Step 6: Build the toolchain
It will cost 12 minutes for binutils and 3 and a half hours for gcc and newlib.
Of cource, it depends on your machine's speed.
./build.script

==build.script======================================================
# Parameter settings
LANG=en
export LANG
TARGET=mips-elf
PREFIX=/opt/mycrosstools/mips
PROJDIR=$PWD
CONFIGBINLOG=configbin.log
MAKEBINLOG=makebin.log
CONFIGGCCLOG=configgcc.log
MAKEGCCLOG=makegcc.log

mkdir -p tmp/build/binutils
mkdir -p tmp/build/gcc

echo "Building Binutils Starts..."
cd tmp/build/binutils
date>$MAKEBINLOG

$PROJDIR/src/binutils/configure --target=$TARGET --prefix=$PREFIX 2>&1|tee $CONFIGBINLOG
make all install 2>&1| tee $MAKEBINLOG
date>>$MAKEBINLOG

cd $PROJDIR/tmp/build/gcc

PATH=$PREFIX/bin:$PATH
export PATH

date>$MAKEGCCLOG

$PROJDIR/src/gcc/configure --target=$TARGET --prefix=$PREFIX --disable-shared --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-gxx-include-dir=$PREFIX/mips-elf/include 2>&1|tee $CONFIGGCCLOG
make all install 2>&1| tee $MAKEGCCLOG
date>>$MAKEGCCLOG
echo "DONE!!"

網上空間

離開學校之後,好像要在找一個快速、免費的網路空間,好像很難了。
最近在弄cross compiler有一點成果,想要找個地方放,沒想到真的是非常的困難。
google的blog好像也沒辦法上傳東西上去,所以,現在也找不到地方放。
真是~~咳…

星期五, 3月 02, 2007

人數破千之後…

似乎很久沒有來這個地方了,自從visitor人數破千之後,停在10xx也停也好久了。我想是因為很久沒發文章了吧!
上次發文的時候,距今也四個多月了。
這四個月難道都沒有事情發生嗎?
不,其實不是沒有,而且都是發生重要的事情。
惟一講的過去的理由是,因為都是發生重要的事情,所以因為忙著處理重要的事情,而沒有時間停下來記錄生活的點滴。
所以我先來列表一下,看有什麼事情是值得寫的。

Co-work with hardware RD
platform porting
年終考核
海外就職!?
學另一種語言??
加薪
英文面試
結婚!YA!
年夜飯
回娘家…
前途:去?留?