GOL @Wiki
AsteriskでPBXについて学ぼう
最終更新:
divadiva
-
view

OpenSolaris上でオープンPBXであるAsteriskをいじくります。
Asteriskのコンパイル(v1.2.10)
オープンソースIP-PBXであるAsterisk(http://www.asterisk.org/)のコンパイルですが、editline.aあたりのコンパイルが失敗すると思います。
原因は、ED_*、EM_*、VI_* などの定義がないためです。~ not declared などのエラーが出ているはずです。
原因は、ED_*、EM_*、VI_* などの定義がないためです。~ not declared などのエラーが出ているはずです。
これらの定義は本来、$SRCDIR/editline/fcns.h に定義されるものです。fcns.hを見てみると、案の定、まったく定義がなされていません。
あれ?おかしいですね・・・
あれ?おかしいですね・・・
実は fcns.h はmake中に自動生成されるものなのです。makeからは、
/bin/sh makelist -fh common.h emacs.h vi.h > fcns.h
のようなコマンドが実行され、生成されます。しかし Bad string というエラーが発生し、期待する結果が出力されないのです。
(gmake $> logfile などで確認してみてください)
(gmake $> logfile などで確認してみてください)
ここでmakelistのfcns.hを生成する箇所をチェックしてみましょう。
# generate fcns.h from various .h files # -fh) cat $FILES | $AWK '/el_action_t/ { print $3 }' | \ sort | tr '[:lower:]' '[:upper:]' | $AWK ' BEGIN { 省略1 } { 省略2 } END { 省略3 }' ;;
$FILESには、common.h emacs.h vi.h が入力されます。fcns.hを見てみると、どうやら「省略1」と「省略3」の内容は出力されていますが、「省略2」の内容はまったく出力されていません。つまり、common.h emacs.h vi.h からの入力データをawkで加工してfcns.hに出力するスクリプトに問題があることがわかります。
で、結局原因は何かと言うと、trコマンドの記述です。小文字を大文字に置換するところがSolaris的によろしくありません。Bad stringはtrのエラーです。
tr '[a-z]' '[A-Z]'
のように書き換えてやれば、期待通り動作します。
ちなみに gmake install で呼び出される install コマンドは、/usr/sbin/install ではなく、/usr/ucb/install になるようにMakefileを書き換えましょう。