m (Asterisk)
m (Asterisk)
Line 54: Line 54:
 
== Asterisk ==
 
== Asterisk ==
  
With all our Prerequisites built, you can now download, build and install Asterisk:
+
With all our prerequisites built, you can now download, build and install Asterisk:
  
 
<PRE>
 
<PRE>

Revision as of 13:10, 3 May 2014

Prerequisites

ncurses

Download, build and install the ncurses library:

wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.9.tar.gz
tar -xzf ncurses-5.9.tar.gz
cd ncurses-5.9
./configure --host=arm-linux-gnueabi --prefix=/usr/arm-linux-gnueabi CXX="arm-linux-gnueabi-g++"
make
make install

SQLite

SQLite is a software library that implements a self contained server-less transactional SQL database engine.

wget https://sqlite.org/2014/sqlite-autoconf-3080403.tar.gz
tar -xzf sqlite-autoconf-3080403.tar.gz
cd sqlite-autoconf-3080403
./configure --host=arm-linux-gnueabi --prefix=/usr/arm-linux-gnueabi 
make
make install 

OpenSSL

Certain Asterisk modules such as chan_sip and chan_iax2 require the res_crypto resource module. The res_crypto module will only be built if the libssl dependency is installed.

There seems to be an issue with OpenSSL and Perl 5.18.1 that results with the following error:

cms.pod around line 474: Expected text after =item, not a number
POD document had syntax errors at /usr/local/bin/pod2man line 71.

Linux from Scratch have patches that resolve this issue and we apply them here.

wget http://www.openssl.org/source/openssl-1.0.1g.tar.gz
wget http://www.linuxfromscratch.org/patches/blfs/svn/openssl-1.0.1g-fix_parallel_build-1.patch
wget http://www.linuxfromscratch.org/patches/blfs/svn/openssl-1.0.1g-fix_pod_syntax-1.patch
tar -xzf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
patch -Np1 -i ../openssl-1.0.1g-fix_parallel_build-1.patch
patch -Np1 -i ../openssl-1.0.1g-fix_pod_syntax-1.patch
./Configure linux-generic32 shared --prefix=/usr/arm-linux-gnueabi
make CC=arm-linux-gnueabi-gcc RANLIB=arm-linux-gnueabi-ranlib LD=arm-linux-gnueabi-ld MAKEDEPPROG=arm-linux-gnueabi-gcc
make install

Asterisk

With all our prerequisites built, you can now download, build and install Asterisk:

wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11.9.0.tar.gz
tar -xzf asterisk-11.9.0.tar.gz
cd asterisk-11.9.0
./configure --host=arm-linux-gnueabi --target=arm-linux-gnueabi --build=i686-pc-linux-gnu --disable-xmldoc
make
sudo make install DESTDIR=/home/export/rootfs
sudo make samples DESTDIR=/home/export/rootfs

Asterisk will require shared libraries to load. Copy over libsqlite3.so, libssl.so, libcrypto.so and libgcc_s.so to your root filesystem:

cp /usr/arm-linux-gnueabi/lib/libsqlite3.so.0.8.6 /home/export/rootfs/lib
cp /usr/arm-linux-gnueabi/lib/libssl.so.1.0.0 /home/export/rootfs/lib
cp /usr/arm-linux-gnueabi/lib/libcrypto.so.1.0.0 /home/export/rootfs/lib
cp /usr/lib/gcc-cross/arm-linux-gnueabi/4.7.3/libgcc_s.so.1 /home/export/rootfs/lib

In addition to the above new libraries, Asterisk also places libasteriskssl.so in /usr/lib. If ldconfig is not executed to re-configure dynamic linker run-time bindings, Asterisk is likely to generate an error: error while loading shared libraries: libasteriskssl.so.1: cannot open shared object file: No such file or directory.

To generate new dynamic linker run-time bindings, on the actual host, execute:

ldconfig -v

Outside of modifying Asterisk configuration files, Asterisk should now we ready to run. To start with a console CLI:

asterisk -c