Autotool

之前編譯iiimccf都是用手工製的Makefile硬幹, 雖然比較速成, 但總不是長久之道. 想起來, 欠這個Autotool的script file已經很久了, 早作晚作都得作, 花了一整天的時間技術文件裡跟自己的怯意掙扎. 終於弄出了一個可以work的tarball. 我現在已經迫不及待的想把它丟進svn裡去了.

Autotool主要包含Automake, Autoconf, Libtool這三個工具, 主要的用途就是作”source package”的包裝. Autotool必需檢查表頭檔和函式庫的相依性, 還得顧及各個平台的編譯環境, 再產生出相應的configure script和Makefile. 和”binary package”比較起來, Autotool顯得複雜多了. 這個GNU出品的Build system是建構原始碼美夢的一道橋梁, Gentoo和FreeBSD的build system就都根基於這個基礎之上.

然而這也是新手進入原始碼寫作的一項嚴格的試煉.

這一次的進度, 主要參考的網路資料有:
The GNU build system . 這一篇是step by step的簡介文件. 雖然介紹的不算完整, 然後他最介紹了入門最重要的步驟和觀念, 對入門的我價值非凡. 此外最重要的是, 他還提供了一張很重要的關係圖, File dependencies in a ./configure project . 這對於Autotool的學習有很大的幫助.

GNU Autoconf, Automake, and Libtool, 這一本就是常聽見的Autobook. 算是目前看到最完整的參考文件.

傷心咖啡店之歌

好熟的書名, 我不喜歡開頭就看書的序言或簡介, 想保留最原始的第一印象.

一開始還不是很能適應書的筆調. 在一長串抒情又精巧的文句, 有好一陣子摸不清楚故事的重心與脈胳. 我放棄原先跳躍式的瀏覽, 決定花一段時間好好的把這本書看完整. 我好奇, 想知道這耳熟又陌生的書, 是怎麼樣的一本小說.

小說中的對話, 常常是對人物最深刻的刻劃, 我喜歡書中的對話,那讓人物個性鮮明. 我也很欣賞場景切換的手法, 常常不知不覺就被帶到另一個場景, 自然卻又感到意外.

“你有沒有想過, 如果今天你的生命就到了盡頭, 你會不會覺得你真正要過的生活還沒有開始, 然後會猛然嚇一跳, 問自已這些年來都在作什麼.”

看這本書的時候有一大半的時間在心裡發呆, 直到這一句對話, 讓我頓時清醒了起來. 好熟的一句話, 偶爾我也常常在心裡問我自己. 這個偶爾, 通常是學期結束時, 寒暑假結束時, 或是過生日的時候. 每次收假的時候, 也總是有類似的感覺. 我想我退伍的時候, 一定也會這樣的問自己一次.

我想你或許會好奇的問我, 花了一個下午看完了馬蒂追求內心的自由的故事後, 得到了什麼東西.

哈, 我想我得到了一整個晚上的憂鬱和沉悶. 當然, 我也明白了這本書吸引我的, 和不吸引我的地方.

收假

有幾次到了收假的時候, 心裡就感到很悶. 總覺得還有好多事情沒弄完, 就要回營, 下次再弄又不知是多久以後.

其實放假的時數雖然不長, 但還是足夠完成一些事. 只是大多時候都花在休息跟摸魚, 直到快收假時, 才驚覺時間已經不夠, 埋頭猛幹的趕進度. 回頭想想, 其實自己作很多事情都是這樣, 總是把最硬最辛苦的, 但卻又是最重要的事擺著, 先去作一些較輕鬆的旁枝末節, 以換取一些小小的成就感. 其後果也是可想而知. 類似的現象, 反應在大大小小的事情上, 其實都是同一個根性.

我想著:”下次一定要好好列舉想作與該作的事, 排定優先順序和估計時間…”. 能不能實踐這個對自己的承諾, 就等待時間的考驗了.

發芽

View post on imgur.com

新訓時, 從新中帶回來的龍眼樹的種子發芽了!

還記得那個時候, 是001班頭幫忙摘的. 再加上後來又摘的兩顆, 共有四顆, 而其中只有一顆發芽了.

結訓播種到現在也快一個月了. 每次放假想到, 都會回來瞧一瞧. 種子的品質似乎很不錯, 聽爸爸說, 這一顆比另一顆試栽的晚發芽, 卻長得比另一顆還快. 這次回來, 又長了新葉枝. 每看一次, 都感覺充滿希望. 我不禁開始想像, 不知道當我退伍時, 它已經長多高了多壯了.

progress again

昨天奮戰了許久, 終於在快破曉的時候, 測試成功. 可惜螢幕快照一時做不出來, 沒能來個搶鮮報, 便任性睡去.

小睡了一下之後, 解決了fbgrab的問題. 順利取圖成功.

View post on imgur.com

雖然還只是一個半成品, 還有很多細節要修改. 但是解決了一個從入伍前一直卡到現在的bug. 還是難掩心中的喜悅.
過程中jserv很有耐心的檢視我的問題, 也給我很棒的建議, 小弟在這裡第一個感謝他 🙂

stripped, not stripped

” *.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped ”

用`file *.so`這個指令來看執行檔的屬性時, 常常會看到”stripped”和”not stripped”這兩個關鍵字. 其實它只是用來顯示這個執行檔有沒有去除多餘的symbol, 像是除錯記號之類的部分. 我們可以用`strip *.so`這個程式來去除不必要的symbol, 以達減少容量的功效.

以libiiimccf.so這個檔作為例子,
使用前:
libiiimccf.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped
-rwxr-xr-x 1 mat users 1.1M Oct 9 00:48 libiiimccf.so

使用後:
libiiimccf.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped
-rwxr-xr-x 1 mat users 45K Oct 9 00:49 libiiimccf.so

我們可以看到容量從1.1MB減少到45KB, 容量的相當明顯.