Asterisk Solaris
1.4からはSolarisでの動作も・・という話でしたが。
同じマシンでもSolaris上で動作させると、Asteriskの性能も向上するようです。
目次
Zaptel
1.2版ならばhttp://www.solarisvoip.com/ ここからパッケージを入手してインストールできます。
1.4版は現在調査中。
DAHDI
DAHDIは現在のところ未対応。
Asterisk 1.4.18
修正箇所
main/stdtime/localtime.c
1136行目がエラーになる。以下のように#ifndefでSolaris時にはこの部分を使用しません。。
result = timesub(&t, ttisp->tt_gmtoff, sp, tmp); tmp->tm_isdst = ttisp->tt_isdst; #ifndef SOLARIS <--+ tmp->tm_gmtoff = ttisp->tt_gmtoff; |この部分 #endif <--+ #ifdef TM_ZONE tmp->TM_ZONE = &sp->chars[ttisp->tt_abbrind]; #endif /* defined TM_ZONE */ return result;
main/editline/np/vis.c
#include<stdlib.h>の下に以下を追加します。
#include <stdlib.h> #ifndef u_int32_t <--+ #define u_int32_t uint32_t | 追加 #endif <--+
コンパイル
gcc類は/usr/sfw/binにあるため、パスを設定しておきます。またGNU系ライブラリは/usr/sfw/libにあるので、LD_LIBRARY_PATHに追加しておきましょう。
makeはgmakeのためconfigureを行う際には
./configure MAKE=gmake CC=gcc LD=gcc AR=gar
を指定しておくと良いでしょう。
Zaptelのヘッダファイルの位置が違うためか--with-zaptelを指定しても、どうもうまくいかないので以下のようにして回避します。
/opt/include/にあるzaptel関連のファイルを/opt/include/zaptelというディレクトリを作りそこにコピー ln -s /opt/include/zaptel /usr/include/zaptel
これでZaptel付でAsteriskがmakeできるはずです。
makeはgmakeなのをお忘れなく。
gmake menuselect CC=gcc LD=gcc AR=gar gmake CC=gcc LD=gcc AR=gar
Asterisk 1.4.22
Solaris 10 x86 (32bit)で検証。通常のAsteriskソースからのインストール。
必要なパッケージ
http://www.sunfreeware.com/programlistintel10.html から以下をインストールしておく。
application SMCbind bind application SMCbinut binutils application SMCcoreu coreutils application SMCgcc gcc application SMCliconv libiconv application SMClintl libintl application SMCmake make application SMCossl openssl application SMCwget wg
コンパイル
コマンドパスは/usr/local/binを最初に参照するように変更しておく。
./configure --with-curses make menuselect
を実行する。もしmake menuselectで -lncursesでコンパイルが失敗する場合には、menuselectのサブディレクトリで
# gcc -o menuselect menuselect.o strcompat.o menuselect_curses.o mxml/libmxml.a mxml/libmxml.a -lcurses
を実行する。
menuselectでモジュール等を指定したならば
make LD=/usr/local/bin/id
を実行するとコンパイルができるはず。
起動時エラーの対処
起動時にダイナミックリンク関係で落ちる場合には起動スクリプト内に以下の行を入れる。
LD_LIBRARY_PATH=/usr/local/lib:/usr/sfw/lib export LD_LIBRARY_PATH
他にも参照するダイナミックリンク・ライブラリがある場合には、そのパスをLD_LIBRARY_PATHに入れること。