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に入れること。