转自http://descent.myftp.org/~descent/arm/index.htm
how to build software for arm

cross-2.95.3.tar.bz2 (這是 corss compiler for arm 2.95.3)
arm-linux-gcc-3.3.2.tar.bz2 (這是 corss compiler for arm 3.3.2, 我目前是使用這一版)
需解開到 /usr/local/arm/

software package name configure 方法 補充
e2fsprogs-1.35 CC=arm-linux-gcc
./configure --build=i386-linux
--host=arm-linux --target=arm-linux
--prefix=/build_package/ipaq/e2fsprogs-1.35-arm
--disable-nls
--enable-elf-shlibs
--enable-elf-shlibs 可以產生 so library
make
make install
// 安裝 library
make install-libs
這些均由 INSTALL 得知
jpeg-6b ./configure --target=arm-linux --host=arm-linux
--build=i386-linux --enable-shared --enable-static
--prefix=/build_package/ipaq/jpeg-6b-arm
make CC=arm-linux-gcc
make install
when make install, 必須要自己建立目錄,
因為 make install 的 script 不會自己建立目錄。
pcmcia-cs ./Configure --kernel=/build_package/glibc-2.2.4/linux-2.4.16-rmk1-hh12
--noprompt --arch=arm --nocardbus --ucc=arm-linux-gcc --ld=arm-linux-ld
--target=/build_package/myroot
需要 linux kernel source
lrzsz CFLAGS=-Wstrict-prototypes CC=arm-linux-gcc ./configure --disable-nls
--disable-timesync --prefix="dir" arm-linux
perl -i -p -e "s/-lnsl//;" src/Makefile
perl -i -p -e "s~(#define ENABLE_SYSLOG.*)~/*
\1 */~;" config.h
make
make install // will install lrz lsz l* file
this build method form tuxscreen
lrzsz-0.12.21 CFLAGS=-Wstrict-prototypes CC=arm-linux-gcc ./configure --disable-nls
--disable-timesync --prefix="dir" arm-linux
perl -i -p -e "s/-lnsl//;" src/Makefile
perl -i -p -e "s~(#define ENABLE_SYSLOG.*)~/* \1 */~;" config.h
cd lib and type make
cd src and type make
perl -i -p -e "s/-lnsl//;" src/Makefile, mean don't link nsl library
make install // will install lrz lsz l* file
this build method form tuxscreen
freetype-2.1.5 CC=/arm_tools/bin/arm-linux-gcc ./configure --host=arm-linux
--target=arm-linux --prefix=/arm_tools/freetype-2.1.1-arm
new configure:
emacs include/freetype/config/ftoption.h
./configure --host=strongarm-linux
OBJ_DIR=. LIBTOOL=libtool make
new configure ref : http://emmie.koka-in.org/~kensyu/zaurus/diary/20030419.html
konqueror CXX=arm-linux-g++ /usr/bin/xconfigure --disable-debug --enable-static --disable-shared --enable-qt-embedded --enable-qpe --with-extra-libs=$PWD/../lib/ --with-extra-includes=$PWD/../include -without-ssl --prefix=$PWD/../konqueror-embedded-snapshot-20030705-arm

./configure --host=arm-linux --target=arm-linux --disable-mt --disable-threading --without-ssl --with-extra-includes=/arm-develop/zlib-1.1.3-arm/include/ --with-extra-libs=/arm-develop/zlib-1.1.3-arm/lib --enable-qt-embedded --enable-embedded --enable-qtopia --with-qt-dir=$QTDIR --enable-qpe --with-qtopia-dir=$QPEDIR --with-gui=qpe --prefix=$PWD/../konqueror-embedded-snapshot-20030705-arm

CC=arm-linux-gcc CXX=arm-linux-g++
./configure --host=arm-linux --target=arm-linux --disable-mt
--disable-threading --without-ssl
--with-extra-includes=/arm-develop/zlib-1.1.3-arm/include/
--with-extra-libs=/arm-develop/zlib-1.1.3-arm/lib
--enable-qt-embedded --enable-embedded --enable-qtopia
--with-qt-dir=/arm-develop/qtopia-1.5/ipaq/qt-2.3.3
--enable-qpe
--with-qtopia-dir=/arm-develop/qtopia-1.5/ipaq/qtopia-free-1.5.0
--with-gui=qpe

CC=arm-linux-gcc CXX=arm-linux-g++ ./configure --host=arm-linux \
--target=arm-linux --disable-mt --disable-threading --without-ssl \
--with-extra-includes=/arm_dep/zlib-1.1.4-arm/include/ \
--with-extra-libs=/arm_dep/zlib-1.1.4-arm/lib/ --enable-qt-embedded \
--enable-embedded --enable-qtopia \
--with-qt-dir=/home/descent/arm_dep/qtopia-1.6/arm/qt-2.3.4 \
--enable-qpe \
--with-qtopia-dir=/home/descent/arm_dep/qtopia-1.6/arm/qtopia-free-1.6.0 \
--with-gui=qpe --prefix=/arm_dep/qtopia-1.6/arm
CC=arm-linux-gcc CXX=arm-linux-g++ ./configure --host=arm-linux \
--target=arm-linux --disable-mt --disable-threading --without-ssl \
--enable-qt-embedded --enable-embedded --enable-qtopia \
--with-qt-dir=$QTDIR --enable-qpe --with-qtopia-dir=$QPEDIR \
--with-gui=qpe --prefix=$PWD/../konqueror-embedded-snapshot_20020127-arm


// 這是作者的 configure method

There are tons of special configure options and the like. I'm getting confused. How does your configuration look like?

Here's what I use for cross-compiling for the iPAQ:
Qt:

./configure -gif -qt-libpng -no-jpeg -no-mng -no-thread -no-opengl -release
-shared -no-g++-exceptions -I/usr/local/arm-linux/include -depths 16
-qconfig local -no-qvfb -xplatform linux-ipaq-g++

Konq/E:

../xconfigure --disable-debug --enable-static --disable-shared
--enable-qt-embedded --enable-qpe --with-extra-libs=$PWD/../lib/
--with-extra-includes=$PWD/../include -without-ssl
--prefix=$PWD/../install

xconfigure is a configure wrapper script I found on the net. It's handy
when cross-compiling for ARM-Linux, as it sets up all necessary
special configure switches to get things right. I put up a copy of it here .
需要 libz 及 jpeg library
depend package: zlib
KDEDIR=/arm_tools/arm-linux/lib/ 此變數看情形而使用
xconfigure 請到 http://developer.kde.org/~hausmann/xconfigure 下載
第一組 configure 可以 build konqueror-embedded-snapshot-20030705 for arm
/win/opie_sdk/arm/opie/include/qpe/version.h
#define QPE_VENDOR "Project Opie"
#define QPE_VERSION "1.1.6"
#define SUB_VERSION ""
if configure check qtopia version is 1.1.6 and don't continue, I modify 1.1.6 to 1.5.6 let configure can work. Then change to 1.1.6 and make for opie 1.1.6 .
need set QPEDIR to opie dir or qtopia dir
suggest symbolic link $QPEDIR/lib/* to $QTDIR/lib maybe avoid some configure error
若是遇到以 opie 來 configure 時發生 check qtopia 版本不合, 改 opie/include/qpe/version.h 其中的
#define QPE_VERSION "1.1.6"
1.1.6 -> 1.5.6 即可通過 configure check。通過檢察在改回來即可。
在做 configure 時, 最好把 $OPIEDIR/lib 或是 $QPEDIR/lib 所有
library link 到 $QTDIR/lib 下, 在檢查 libqpe 時才會過。
libpcap-0.8.1 ./configure --build=i386-linux --target=arm-linux --prefix=$PWD/../libpcap-0.8.1-arm need flex to configure
need byacc to compile
libpng-1.2.5 copy scripts/makefile.linux to ./Makefile or symbolic link,
modify Makefile zlib include, lib variable,
and prefix variable to install,
type make install CC=arm-linux-gcc
depend: zlib
zlib-1.1.4
ref: http://www.ailis.de/~k/docs/crosscompiling/zlib.php
sqlite 2.8.15 I modify makefile to build it. ./configure --target=arm-linux --host=arm-linux --prefix=$PWD/../sqlite-2.8.15-arm This configure I get a Makefile and I modify it to build sqlite. TCC (in Makefile) I change gcc to arm-linux-gcc, and I remove libtool to build sqlite and use arm-linux-ar to build libsqlite.a. dep ncurses library if you want sqlite command. If you only need library and include file, you don't need ncurses library.
ncruses 5.2 需要 tic 來產生 terinfo file, make install 時要用到 tic, 必須要是 host version, in my pc, it is x86 format and static link which I build from source code. Tic (x86) is in this tar ball. arm version tic, I delete it.
fam-2.7.0 ./configure -target=arm-linux --host=arm-linux --prefix=$PWD/../fam-2.7.0-arm modify some source code (fam.h, src/NetConnection.h) #i nclude <limits.h> to #i nclude <linux/limits.h> in my toolchain.
esound-0.2.29 CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PWD/../esound-0.2.29-arm modify Makefile: audiofile-config 在 libaudiofile/bin AUDIOFILE_CONFIG = ./audiofile-0.2.3-arm/bin/audiofile-config AUDIOFILE_LIBS = `./audiofile-0.2.3-arm/bin/audiofile-config --libs` make make install
libid3tag-0.15.1b CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PWD/../libid3tag-0.15.1b-arm read mp3 id3 tag
libmad-0.15.1b-arm CC=arm-linux-gcc ./configure --host=arm-linux --prefix=$PWD/../libmad-0.15.1b-arm mp3 library
bluez-libs-2.15 ./configure --build=i386-linux --host=arm-linux --target=arm-linux --prefix=$PWD/../bluez-libs-2.15-arm bluetooth library
rsync-2.6.3 CC=arm-linux-gcc ./configure --build=i386-linux --host=arm-linux --prefix=$PWD/../rsync-2.6.3-arm modify rsync.h add #define uint64 unsigned long and remove all uint64 macro
module-init-tools-3.2-pre1 ./configure --build=i386-linux --host=arm-linux --target=arm-linux --prefix=/home/descent/module-init-tools-3.2-pre1/upstream/tarballs/module-init-tools-3.2-pre1/../module-init-tools-3.2-pre1-arm
bash-3.0 ./configure --build=i386-linux --host=arm-linux --enable-readline --prefix=$PWD/../bash-3.0-arm
/util-linux-2.12r CC=arm-linux-gcc ./configure --build=i386-linux --host=arm-linux --target=arm-linux --prefix=$PWD/../util-linux-2.12r-arm 只有編譯其中的 fdisk 程式。
modify util-linux-2.12r/MCONFIG ARCH 改成 ARCH=arm,
cd fdisk
make CC=arm-linux-gcc