1 LINPHONE ON ARM-LINUX (HANDHELD COMPUTERS)
2 ******************************************
4 The console version of linphone works on arm-linux and has been tested on ipaqs
5 under the familiar linux distribution (http://www.handhelds.org).
6 You can find .ipk binary packages on the linphone's download page.
7 If you want to build your own arm-linux packages, here are some instructions to
8 cross compile linphone and its dependencies: readline, speex and libosip.
9 This is my own experience on cross compiling software. As there is no precise
10 step by step documentation (as far as I know) on how to cross-compile on arm,
11 there is no guaranty that the following instructions are the best way to do it.
12 First, be aware that only the console version of linphone can compile on ARM.
15 * You need the lastest arm toolchain from http://www.handhelds.org. Uncompress it in / .
16 It contains all the cross-compilation tools. Be sure that the arm-linux-gcc binaries
17 are in your PATH (export PATH=$PATH:/usr/local/arm/3.4.1/bin/ , for example)
18 * create within your home directory a arm/ directory, copy into it the fresh
19 tarballs of libosip2>=2.2.x, speex>=1.1.6, linphone>=1.2.1 readline>=5.1 and ncurses>=5.5 (readline needs ncurses)
24 Very important things common to all packages being cross compiled:
25 ******************************************************************
26 * copy the ipaq-config.site in the ipkg/ directory of linphone into some safe place,
27 for example: ~/ipaq-config.site .
28 * You need a directory that we call ARM_INSTALL_TREE that will own files in the same way they will be installed on the target computer.
29 It is also used to build linphone over the arm binaries of its dependencies (speex,osip,ncurses,readline).
33 export CONFIG_SITE=~/ipaq-config.site
34 export ARM_INSTALL_TREE=/armbuild
37 Cross compiling ncurses for ARM:
38 ********************************
39 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --with-shared
41 make install DESTDIR=$ARM_INSTALL_TREE
42 make install DESTDIR=`pwd`/armbuild
45 Cross compiling readline for ARM:
46 *********************************
47 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static
49 make install DESTDIR=$ARM_INSTALL_TREE
50 make install DESTDIR=`pwd`/armbuild
54 Cross compiling libosip for ARM:
55 ********************************
56 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static
58 make install DESTDIR=$ARM_INSTALL_TREE
59 make install DESTDIR=`pwd`/armbuild
61 Cross compiling speex for ARM:
62 ********************************
63 First you need to remove ogg headers from your build system to avoid a dirty conflict between
64 your build machine binaries and the arm binaries. They are usually in a libogg-dev package (rpm or deb).
66 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static --enable-fixed-point --enable-arm-asm
68 make install DESTDIR=$ARM_INSTALL_TREE
69 make install DESTDIR='pwd'/armbuild
72 Cross compiling linphone for ARM
73 ********************************
74 First you need to remove all .la files from the ARM_INSTALL_TREE because it confuses libtool and makes
75 the linker use your build machine binaries instead of the arm-crosscompiled ones.
76 rm -f $ARM_INSTALL_TREE/usr/lib/*.la
77 #for some reason pkg-config doesn't like cross-compiling...
78 export PKG_CONFIG=/usr/bin/pkg-config
79 ./configure --prefix=/usr --host=arm-linux --with-gnu-ld --disable-static \
80 --disable-glib --with-osip=$ARM_INSTALL_TREE/usr \
81 --with-readline=$ARM_INSTALL_TREE/usr \
82 SPEEX_CFLAGS="-I$ARM_INSTALL_TREE/usr/include" \
83 SPEEX_LIBS="-L$ARM_INSTALL_TREE/usr/lib -lspeex "
85 make install DESTDIR='pwd'/armbuild
87 You can use the install trees libosip2-x.x.x/armbuild speex-x.x.x/armbuild and
88 linphone-0.x.x/armbuild/ to make binary packages of
89 each software, as ipkgs for the familiar distribution (http://www.familiar.org).
90 In the ipkg/ directory of linphone you can find .control files for ipkg-build.
91 In order to make the osip ipkg, you have to do the following:
92 - create a directory named CONTROL inside libosip2-2.2.x/armbuild
93 - copy the libosip.control file into CONTROL/ and rename it into "control".
94 - edit the "control" file to adjust version number accordingly.
95 - remove the non essential parts of libosip inside libosip2-2.x.x/armbuild/usr/ : just
96 leave the lib/ directory. This saves space on the destination computer.
97 - then inside libosip2-2.x.x, run ipkg-build -o root -g root armbuild
98 The same procedure applies to make linphone's ipkg.
99 Binaries can also be stripped with arm-linux-strip to save more space.
101 Running linphone under the handheld computer
102 ********************************************
104 You just have to start linphone from a terminal by typing 'linphonec'.