顯示具有 embedded 標籤的文章。 顯示所有文章
顯示具有 embedded 標籤的文章。 顯示所有文章

2009/12/08

gdb 7.0 在 arm gcc 3.4.1 成功編譯 (Ubuntu 9.10)

  之前上 ARM embedded Linux 課程,老師提供的 arm-linux-gcc 3.4.1 版拿回家build gdb 6.8版會出現問題無法成功編譯,其錯誤訊息表示 在某一個 .c 檔中呼叫 getpwd() 卻沒有接收回傳值. 實在懶得去改 gdb 6.8 source code. 只好到 http://www.gnu.org 去下載 gdb 7.0版 source code 回來自己再 build 一次. 很簡單地就 OK 了.
  上課用的開發環境是 CentOS 5.3 ,回家還是喜歡用 Ubuntu 9.10 ,但少數有幾個軟體 source code 在 CentOS 使用 arm-linux-gcc 3.4.1 都很正常, 換到 Fedora 12 或 Ubuntu 9.10 卻問題連連.現在上完課了, 總算比較有時間一個個來解決它.


2009/12/06

終於上完 ARM embedded Linux 課程

  連續兩個月星期天上整天的 embedded linux 課程真的是一種折磨,還好今天終於結束了!雖然課程很貴,但老師教的很好,再加上自己對 C, Linux 還有那麼一點熟,最花心思的只有觀念及一些實務面的東西.課是上完了,但還有一堆實作練習要真的去試過才能叫有學到東西.
  太多天沒有使用 Ubuntu Linux ,因為一直在用 Fedora ,今天又將它開起來,這個9.10真的是好用又美觀.整理了一些開發 embedded 的環境設定之後,暫時不想再用 Fedora 了.


2009/11/01

boa web server porting問題

  今天在練習將 boa 這個 web server 編譯成 arm 平台時發生以下問題:

make 時:
[root@localhost src]# make
arm-linux-gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c
util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1
找到 util.c 的第100行程式碼:
time_offset = TIMEZONE_OFFSET(t);

改成 : time_offset = 0;
重新 make 就可以了。為什麼要這樣改,Linux 的 time_t 中沒有 tm_gmtoff 這個 field. 而 compat.h 中的定義卻是這樣寫的:

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff







2009/10/31

CentOS 5.4 建置 ARM embedded 開發環境

  最近在學習 Embedded Linux 開發 ,在課程中是使用 CentOS 5.3 。回家練習實在不願意將 Ubuntu 9.10換掉,只好開始將 tftp server 設好,minicom 準備好。將帶回來的 toolchain 也裝起來,u-boot 也編譯出來,kernel Image 也做出來,就是在編譯 rootfs 出問題。最後只好拿另外一顆備用硬碟裝 CentOS 5.4 。裝好後發現 GNOME 2.16 版本實在太老,使用方便性比不上現行的 2.28 。FireFox 更是舊,是 3.0.15。沒辦法只能暫時忍受此版本。等上課向老師請教如何解決 Ubuntu 編譯問題就要將 CentOS 停用。

接下來發現 CentOS 真的是給企業用的套件,連顯示卡驅動程式也只有 vesa ,真是浪費我的 nVidia 9500 ,還是用和 Red Hat 一樣的老方法,上 www.nvidia.com 自己下載 190.42 驅動程式,順便將 kernel-devel 裝上,設定成開機進入文字模式,重開後執行從 NVIDIAxxxxx.run 回答幾個問題後,它就會自己編譯好核心模組。再用 startx 進入 X-Window 就好了。說實在的和 Ubuntu 比起來真的非常不好用。

因為上課是使用 CentOS,而自己是直接上實作班,沒有上 C, Linux 等基礎課程,所以在家建置開發環境時才發現不只是要安裝 CentOS ,在 compile AP 時有時候還要加裝 bison (yacc) 等軟體。還好有點概念,也終於將環境建好,順便也將 Ubuntu 9.10 上的 ARM 開發環境準備好,多數要 porting 的 AP 都可以 build 成功。只有一兩個軟體 在 arm-linux-gcc 2.95.3, 或 3.4.1 都無法成功編譯,有些還會出現 arm gcc internal error ,真是難搞。短時間內先用 CentOS 頂著,有空再來弄 Ubuntu 9.10。