2008年12月6日 星期六

分散式編譯環境 Icescream

Icescream 它是一個分散式的 compiler 架構…
可以藉由同個網域下的cpu資源~來減少編譯程式的時間!

在Debian 和 Ubuntu 下相當好安裝… 只要
$sudo aptitude install icecc icecc-monitor
然後
$export PATH=/usr/lib/icecc/bin:$PATH
就好了

在同一個網域下,把一台機器設成 scheduler (一台就好)
sudo vim /etc/default/icecc
# Defaults for icecc initscript
# sourced by /etc/init.d/icecc
START_ICECC="true"
START_ICECC_SCHEDULER="true"

把紅色的地方 false 改成 true
sudo /etc/init.d/icecc restart
就搞定了…

編譯的時間會隨著電腦的多寡來增快~

2008年11月19日 星期三

Openmoko 手機軟體環境開發建置

請注意 本開發環境 使用 ubuntu 8.10 作業平台建置 ~

 dfu-util 更新手機程式
首先需要安裝額外的套件
$sudo apt-get install gcc g++ autoconf automake binutils libtool libglib2.0-dev ccache libxrender-dev intltool libmokoui2-dev libgconf2-dev mtools fakeroot alien
Neo FreeRunner 開機後預設的IP是192.168.0.202
使用usb將手機與pc連接後~將pc端的usb模擬成網路介面 並指定192.168.0.200給pc端
就可以連上手機!
這時可以用lsusb指令來檢視連到電腦的usb 裝置
Bus 002 Device 006: ID 1457:5122 First International Computer, Inc. OpenMoko Neo1973 kernel cdc_ether USB network
必須要有這個裝置
$sudo ifconfig usb0 192.168.0.200
如果無法使用usb0裝置~
請執行下面這行
$modprobe usbnet (載入usbnet模組)
接著就能連入手機
$ssh root@192.168.202
如要輸入密碼!請直接按enter進入!
進到手機端後
請改dns server
$sudo vim /etc/resolv.conf 
改成hinet 的dns "nameserver 168.95.1.1"
記得要把主機端執行下面這三行~手機才能透過電腦連上網路!!
$iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/24
$sysctl -w net.ipv4.ip_forward=1
$ip addr add 192.168.0.200/24 dev usb0
 
===============
以下請在主機端執行!!等手機開載U-boot選單!接上usb線就可以開始燒寫
$cd ~
$mkdir freerunner
$wget   http://downloads.openmoko.org/daily/dfu-util
$chmod a+x dfu-util
下載2008.9月 釋出的kernel
$wget  http://downloads.openmoko.org/releases/Om2008.9/Om2008.9-gta02-20081106.uImage.bin
$./dfu-util -a kernel -R -D ./Om2008.9-gta02-20081106.uImage.bin

下載 rootfs

$wget http://downloads.openmoko.org/releases/Om2008.9/Om2008.9-gta02-20081117.rootfs.jffs2
$./dfu-util -a rootfs -R -D ./Om2008.9-gta02-20081117.rootfs.jffs2
燒寫rootfs需要一段時間..可以去喝好幾杯茶再回來...

2008年11月9日 星期日

Openmoko 手機軟體開發GTK+

Openmoko 手機軟體開發GTK+在Openmoko的軟體 需使用Pre-Built Toolchain來編譯 本篇是使用 GTK+ 開發環境
下載預先編譯好的 Toolchain
$cd ~/freerunner
$ wget http://downloads.openmoko.org/toolchains/openmoko-i686-arm-linux-gnueabi-toolchain.tar.bz2
切換至 ‘/’ (根目錄) 後直接解壓即可完成安裝
$ cd /
$ sudo tar jxvf ~/freerunner/openmoko-i686-arm-linux-gnueabitoolchain.tar.bz2
由 pre-built toolchain 裡取得第一個範例
$ cd ~/freerunner
$ cp -r /usr/local/openmoko/source/openmoko-sample2 ./
設定環境變數(Pre-built toolchain 裡己經寫好環境變數設定,可以直接引用。)
$ . /usr/local/openmoko/arm/setup-env
使用 pre-built toolchain 提供的 om-conf 來建立所須的設定檔
$ om-conf openmoko-sample2
未正確設定環境變數將無法執行 om-conf
Host 端可能需要額外的工具套件、請先行安裝補齊
$sudo apt-get install gnome-common
主要的程式放置於 openmoko-sample2/src 目錄下
使用 openmoko-sample2 裡的 autogen.sh 來產生 Makefile
$ cd openmoko-sample2
$ ./autogen.sh
編譯後打包成 Openmoko 所需的 ipk 格式
$ make
$ cd ..
$ om-make-ipkg openmoko-sample2
• 取得 ipk 套件後以 scp 方式安裝至手機
• 再 ssh 到手機上後以 ipkg 指令安裝套件
$ scp openmoko-sample2_0.1_armv4t.ipk root@192.168.0.202:
$ ssh root@192.168.0.202 opkg install openmoko-sample2_0.1_armv4t.ipk
安裝 Library 至 Toolchain這邊是使用 opkg-target 安裝套件至 pre-built toolchain $ cd /usr/lib
$ sudo ln -s libcurl.so.3 libcurl.so.4
$ sudo su -
# . /usr/local/openmoko/arm/environment-setup
# opkg-target update
# opkg-target install libevas-dev
# opkg-target install libetk-dev
# opkg-target install libts-dev
# exit
$
安裝完後~可以做個實驗!首先~下載這個lots-gameread-only的專案
$ svn checkout http://lots-game.googlecode.com/svn/trunk/lots-gameread-only
修改src/Makefile.am的內容~紅色的部份
INCLUDES = -I$(top_srcdir)
AM_CPPFLAGS = \
-DPKGDATADIR=\"$(pkgdatadir)\" \
-DTERMINAL_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
-DDATADIR=\""$(datadir)"\" -D_GNU_SOURCE
AM_CFLAGS = -Wall -pedantic -std=c99 @DEPENDENCIES_CFLAGS@
# add the name of your application
bin_PROGRAMS = game
# add the sources to compile for your application
game_SOURCES = \
game.c \
gs_read.c
game_LDADD = @DEPENDENCIES_LIBS@
MAINTAINERCLEANFILES = config.h.in Makefile.in
接著修改 configure.ac 紅色的部份
AC_PREREQ(2.53)
AC_INIT(lots-game, 0.0.1, http://www.openmoko.org/)
AM_INIT_AUTOMAKE()
AC_CONFIG_SRCDIR(src/game.c)
AM_CONFIG_HEADER(config.h)
AM_MAINTAINER_MODE
...
dnl i18n support
GETTEXT_PACKAGE=AC_PACKAGE_NAME
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Gettext package])
...
PKG_CHECK_MODULES(DEPENDENCIES, evas etk)
AC_SUBST(DEPENDENCIES)
AC_OUTPUT([
Makefile
src/Makefile
data/Makefile
po/Makefile.in
])
最後把 lots-game 編譯成ipk檔..就能放到手機內安裝..
$ ./autogen.sh --host=arm-linux
$ make
$ cd..
$ om-make-ipkg lots-gameread-read-only 
會產生一個 lots-gameread-read-only_0.1_armv4t.ipk

QEMU模擬openmoko

1. 準備開發 OpenMoko 用的環境


因為 OpenMoko 要在 Arm 處理器上執行,而你的 Linux 大概是裝在用 Intel 或 AMD CPU 的 PC 上(有人用 Mac 玩 OpenMoko 嗎?),所以要先建立好 cross-compile 的環境,這包括 QEMU、
gcc 3.x、cl-sdl... 等等。

1.1. 取得 QEMU

你必須先取得一份由 OpenMoko Patch 過的 QEMU:
$ svn checkout https://svn.openmoko.org/trunk/src/host/qemu-neo1973
$ cd qemu-neo1973

1.2. 編譯 QEMU

取得 QEMU-NEO1973 Source code 之後,其最佳的編譯器為 gcc-3.x。如果使用 gcc 4.x 會出現下列
訊息:
WARNING: "gcc" looks like gcc 4.x
Looking for gcc 3.x
gcc 3.x not found!
QEMU is known to have problems when compiled with gcc 4.x
It is recommended that you use gcc 3.x to build QEMU
To use this compiler anyway, configure with --disable-gcc-check
安裝編譯 source code 的必須套件:gcc 3.x 和 cl-sdl,順便把待會要用的 lynx 和 netbm 也裝起來:

# aptitude install gcc-3.4
# aptitude install cl-sdl
# aptitude install lynx
# aptitude install netbm
編譯:

$ ./configure –target-list=arm-softmmu
$ make

1.3. 下載 Openmoko 的核心和 Root 檔案系統的映像檔

$ openmoko/download.sh

2. 由 QEMU 執行 OpenMoko

$ openmoko/flash.sh

2008年10月5日 星期日

安裝KScope程式編輯軟體

首先~必須 執行apt-get update 來更新你的目錄清單!
接著 執行apt-get install KScope 接著就會自動從網路上抓回來安裝!
安裝完後 在應用程式>軟體開發>KScope


接著 選擇 Project > New Project  開啟一個新的專案


接著輸入專案名稱~跟路徑

由於這邊 他提供可以一次把所有的程式用樹狀結構開出來~就不用一個一個去開啟~所以我們選Tree

如果我們看到一個副程式想尋找他在哪邊~必須先點那個副程式兩下 然後選Cscope>Find Text..

這時在底下的視窗~就會顯示副程式所出現過的位置~這樣就能加速我們的搜尋~!!

2008年9月9日 星期二

在ubuntu裡使用teamviewer遠端遙控軟體

temviewer 是一個免費的遠端遙控軟體..可以直接穿透任何的防火牆~
非常的方便就可以達到連線的目的~由於他是在winodws平台上開放~

目前是不支援LINUX 作業系統~
不過我們可以使用 Wine 來模擬windows的程式~

$sudo apt-get install wine

下載TeamViewer3.5.4140.tar.gz

$tar zxvf TeamViewer3.5.4140.tar.gz
$cd TeamViewer3.5.4140
$wine TeamViewer.exe

神奇的事情就發生了....開起來了~傑克.....