2009年6月19日 星期五

Ubuntu 安裝 RAR 解壓縮程式

RAR 是屬於 non-free 的套件, 所以預設 apt 是找不到的.

不修改 /etc/sources.list 就想直接安裝, 最簡單的方法就是到 WinRAR 的官方網站下載 Linux 版本的 unrar 就可以囉~

安裝步驟

1. wget http://www.rarlab.com/rar/rarlinux-3.9.b3.tar.gz

2. tar zxvf rarlinux-3.9.b3.tar.gz

3. cd rar; cp rar /usr/bin; cp unrar /usr/bin

4. 測試: unrar x xxx.rar

2009年6月5日 星期五

ubuntu 安裝 tftp server

1.安裝相關軟件包

apt-get install tftpd tftp xinetd

2.建立配置文件
cd /etc/xinetd.d/
vi tftp
輸入
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
儲存退出

3.建立tftp目錄
sudo mkdir ~/tftpboot

4.重新啟動xinetd
/etc/init.d/xinetd restart

5.測試TFTP Server功能,在/tftpboot 目錄下隨便放個檔案
$tftp x.x.x.x
get 檔案

2009年6月4日 星期四

Ubuntu 8.10 與 9.04 及 10.04 編譯 arm-linux-gcc (Crosstool-0.43)

建立交叉編譯工具鏈的主機環境:OS=Ubuntu 9.04 GCC=4.1 CPU=T7250 RAM=2G
sudo apt-get install bison flex m4 gcc-4.1 build-essential patch libncurses5-dev
mkdir /home/wayne/downloads
mkdir /home/wayne/crosstool-4.1.1
在10.04中需再安裝bison flex

先下載下列檔案,並放到$home/downloads
binutils-2.16.1.tar.bz2
glibc-2.3.2.tar.bz2
glibc-linuxthreads-2.3.2.tar.bz2
gcc-3.3.6.tar.bz2
gcc-4.1.1.tar.bz2
gdb-6.5.tar.bz2

wget http://ftp.gnu.org/gnu/binutils/binutils-2.16.1.tar.bz2
wget http://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.bz2
wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.2.tar.bz2
wget http://ftp.gnu.org/gnu/gcc/gcc-3.3.6/gcc-3.3.6.tar.bz2
wget http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2
wget http://ftp.gnu.org/gnu/gdb/gdb-6.5.tar.bz2

由於9.04版gcc為4.3.3 編譯用此版本編譯會出錯,所以改用gcc4.1 sudo apt-get install gcc-4.1

然後是
sudo rm /usr/bin/gcc (刪除GCC,它只是個到gcc-4.3.3的軟鏈接文件)
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc (建立GCC到gcc-4.1的連接)

如果運行
ls -la /bin/sh
看到鏈接的是 dash ,則請運行以下命令
sudo dpkg-reconfigure dash
選擇 no 以刪除 dash ,編譯完成可再運行此命令選擇 yes 以重新安裝 dash
此處如果不改好的話,編譯時會出現錯誤

修改 crosstool-0.43 目錄下 demo-arm9tdmi.sh 為
#!/bin/sh
# This script has one line for each known working toolchain
# for this architecture. Uncomment the one you want.
# Generated by generate-demo.pl from buildlogs/all.dats.txt
set -ex
TARBALLS_DIR=$HOME/downloads
RESULT_TOP=/home/wayne/crosstool-4.1.1
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES
# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest


eval `cat arm9tdmi.dat gcc-4.1.1-glibc-2.3.2.dat` sh all.sh --notest
echo Done.

其中紅字部分是需要改變的的
TARBALLS_DIR 是下載的工具原始碼的存放目錄,可事先下載原始碼存放於此(不要解壓)。RESULT_TOP 是要生成的工具鏈的存放目錄,一定要改到有寫權限的目錄,不然無法編譯
修改 crosstool-0.43 目錄下 gcc-4.1.1-glibc-2.3.2.dat 為
BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.1
GLIBC_DIR=glibc-2.3.2
LINUX_DIR=linux-2.6.28.10
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
GDB_DIR=gdb-6.5

關於 linux-libc-headers ,引用 Aquarius 的話如下
編譯Glibc必須要有linux內核頭文件。最初人們直接使用內核源碼包中的頭文件(/usr/include目錄 下),後來由於內核開發者強烈反對這種做法,於是出現了linux-libc-headers項目,以為Linux頭文件維護一個穩定版本的API。最近 該項目已經停止發展(該項目提供的最新版本的「純淨的」頭文件版本是2.6.12.0);從2.6.18版本開始,內核開發組負責維護一份統一的、「純淨 的」內核頭文件,獲取編譯glibc所需的頭文件只需要使用命令」make headers_install」即可。

要想瞭解 Crosstool 更多的信息,可以閱讀《crosstool-howto》和《Crosstool variables》
如果不是需要很瞭解 Crosstool ,又想看中文解釋的推薦閱讀 Aquarius 的
Building arm-linux toolchain for ARM/XScale-iWMMXt

以上就是編譯交叉編譯工具所用到的源文件組合,這個組合可以成功編譯,關於那些組合可以成功編譯可以參照http://kegel.com/crosstool/crosstool-0.43/buildlogs/表格。

在終端中進入 crosstool-0.43 目錄執行
sh ./demo-arm9tdmi.sh
若是完成時會出現
+ echo Done.
Done.

註:不要以root用戶登錄進行編譯
等待40分鐘的時間編譯就會完成了,編譯完成後應該在你所設的工作目錄下的 gcc-4.1.1-glibc-2.3.2/arm-4.1.1-linux-gnu/bin 下找到 arm-4.1.1-linux-gnu-gcc

修改環境變量
修改環境變量有多種方法我們介紹兩種
(1)第一種方法:在當前用戶目錄的.bashrc中添加如下內容
$export PATH=$PATH:/home/wayne/crosstool-4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin:
(2)第二種方法:或直接修改/home/wayne/.bashrc
cd /home/wayne
vi .bashrc
添加如下內容:
PATH=$PATH:/home/wayne/crosstool-4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin:
然後
source .bashrc
執行如下命令
$ arm-9tdmi-linux-gnu-gcc -v -v
顯示
Using built-in specs.
Target: arm-9tdmi-linux-gnu
Configured with: /home/wayne/crosstool-0.43/build/arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/gcc-4.1.1/configure --target=arm-9tdmi-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/home/wayne/crosstool-4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu --with-cpu=arm9tdmi --enable-cxx-flags=-mcpu=arm9tdmi --with-headers=/home/wayne/crosstool-4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu/include --with-local-prefix=/home/wayne/crosstool-4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/arm-9tdmi-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.1.1

恢復我們修改的系統配置:
恢復gcc為4.3
sudo rm /usr/bin/gcc
sudo ln -s /usr/bin/gcc-4.3 /usr/bin/gcc
重新安裝dash
sudo dpkg-reconfigure dash
選擇 yes 以重新安裝 dash

解決Ubuntu內建PCmanX亂碼的問題

內建PCmanX亂碼的問題對很多PTT用戶來說會很重要
因為常用的KKman似乎沒看到Linux版本的安裝檔
Ubunutu也很貼心的幫你內建了PCman這套很多人用的Telnet連線軟體

剛安裝好Ubunutu 9.04首次打開PCman上PTT應該是亂碼一堆(軟體本身不會)
解決方式很簡單,只要修改字型就可以囉!!

PCmanX > 檢視 > 字型 > AR PL Ukai TW

這樣就可以讓中文字正常顯示囉!

2009年6月3日 星期三

使用UNetbootin安裝Linux Live USB(可以用在多個系統)

下載完整Linux ISO檔之後,除了可以燒錄成Live CD之外,也可以寫入USB做成可開機的Ubuntu USB,隨時攜帶使用。

1. 先至UNetbootin官網下載for Windows使用的UNetbootin軟體。

2. 執行unetbootin軟體,選擇作業系統版本、來源ISO檔路徑位置、寫入USB位置。按下確認[OK]。

3.支援的OS有 Ubuntu, Cent OS, Fedora, FreeBSD, openSUSE, NetBSD, Mandriva, Gontoo
與其他,至於版本的話會時常更新。



2009年6月2日 星期二

分享一個下載IELTS考試書籍的網站

在坊間關於ielts考試的書不是太貴就是大陸的簡體書,不過光購買的金額會超過8000元,後來在網路上找到免費下載的網站,也無須註冊

http://artefact.lib.ru/languages/eng_textbooks_ielts.shtml

linux上找到替代merge

在windows上若是需要比對程式碼的話,只有使用merge,但是若在Linux,原始碼那麼的多比對起來眼睛都會看花,不過最近找到了meld可以替代merge,當要比對的目標較複雜或對diff指令不孰的人很合適並且功能更為強大,尤其它還有3個檔案和目錄的比對功能.

個人安裝的版本:meld-1.1.2
License: GPL
URL:http://meld.sourceforge.net/
或是在Ununtu 底下輸入 apt-get install meld,就會自動完成












兩個檔案比對














兩個目錄比對

 Ubuntu has a mechanism, that is, the installed network card (NIC) will be renamed to another name when the system is booted. Although there...