2012年5月17日 星期四

freeswitch cross compile and run freeswitch

有 cross compile 相關資訊。
http://wiki.freeswitch.org/wiki/Installation_Guide#Cross_Compiling_for_ARM_on_Linux

in openwrt environment:
http://wiki.freeswitch.org/wiki/OpenWrt

在 debian 編譯 freeswitch: http://www.howtoforge.com/setting-up-freeswitch-on-debian-5-lenny

照著文件弄好, 打這指令就可以編譯 freeswitch

make V=99 package/freeswitch-compile

在 openwrt 的編譯環境上, 少了 libuuid.so.1 在執行 freeswitch 時, 會 hang 住。

而 src/mod/endpoints/mod_sofia/sofia.c 有一段程式碼會有編譯錯誤的訊息, 但是
freeswitch 還是會繼續編譯下去, 照理說應該要停止, 否則會以為一切都沒問題,
很難找到錯誤的問題。因為沒有正確編出 mod_sofia, x-lite 根本無法測試成功。

static void logger(void *logarg, char const *fmt, va_list ap)
{
   if (!fmt)
           return;

#if 0
   if (ap) {
           switch_log_vprintf(SWITCH_CHANNEL_LOG_CLEAN, mod_sofia_globals.tracelevel, fmt, ap);
   } else {
           switch_log_printf(SWITCH_CHANNEL_LOG_CLEAN, mod_sofia_globals.tracelevel, "%s", fmt);
   }
#endif
}

#if 0
#endif
這是我加上的。

我把這段 code 住解掉, 才能順利編譯。va_list 在某些 gcc 版本已經不再是 char* 了, subversion 上的解法, 我仍然無法成功編譯。

安裝聲音檔案, 有些測試環境需要這些聲音檔。
make cd-sounds-install          
make cd-moh-install             

make uhd-sounds-install         
make uhd-moh-install            

make hd-sounds-install          
make hd-moh-install             

make sounds-install             
make moh-install 

在執行 freeswitch 之前要先設好 IP, lo 需要設定, eth0 也要, lo 沒設定會有 error message。
ex:
ifconfig lo 127.0.0.1ifconfig eth0 192.168.200.1


修改設定檔:
modify /usr/local/freeswitch/conf/vars.xml
copy the line

<X-PRE-PROCESS cmd="set" data="domain=$${local_ip_v4}"/>

and change the domain=$${local_ip_v4} to IP
like this:

<X-PRE-PROCESS cmd="set" data="local_ip_v4=192.168.200.1"/>

最後是執行的方式:
openwrt wiki 寫的這段執行方式才能正確載入 mod_sofia.so, 直接執行 /usr/local/freeswitch/bin/freeswitch 會有無法載入某些 so 檔案的錯誤訊息, 可是這些 so 檔案明明都存在。
在我的 x86 機器上, 就不需要設定 LD_LIBRARY_PATH 環境變數, 直接執行 /usr/local/freeswitch/bin/freeswitch 即可, 也許是 uclibc 的問題。

startfs.sh
#!/bin/sh ulimit -s 240
export PREFIX=/usr/local/freeswitch
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PREFIX/lib
$PREFIX/bin/freeswitch -conf $PREFIX/conf -db $PREFIX/db -log $PREFIX/log


stopfs.sh
#!/bin/sh export PREFIX=/usr/local/freeswitch
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PREFIX/lib
$PREFIX/bin/freeswitch -stop 

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。