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 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
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
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/cpeacock/export/rootfs/lib cp /usr/arm-linux-gnueabi/lib/libcrypto.so.1.0.0 /home/cpeacock/export/rootfs/lib cp /usr/lib/gcc-cross/arm-linux-gnueabi/4.7.3/libgcc_s.so.1 /home/cpeacock/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