天天看点

FreeSwitch在银河麒麟操作系统上的编译

        近期尝试了一下在国产银河麒麟操作系统下编译FreeSwitch,最后是成功了,但是也碰到了一些问题,特此将整个编译过程记录如下,供有需要的朋友参考。

        操作系统的环境如下图,freeswitch源码采用的是1.6.20版

FreeSwitch在银河麒麟操作系统上的编译

        第一步,我们先安装一些依赖项,这些是我一个个精心挑选的,没有多余不需要的:)

yum -y install libjpeg-devel  libcurl-devel  speexdsp-dev libedit-devel lua-devel
           

       第二步,源码安装openssl1.0.2,编译安装没有问题,但是因为系统原来自带了1.1.1版本的openssl,而后的freeswitch仍然会去使用系统自带的头文件和库文件,但是使用1.1.1版本的openssl是无法通过编译的(这个是这次编译最大的坑了)。因此需要将自己通过编译安装的的openssl 1.0.2的头文件和库文件替换系统自带的,目标位置在/usr/include/,/usr/lib64/,这个可能不是最好的方法,希望哪位朋友能提供更好的方法。

wget https://www.openssl.org/source/openssl-1.0.2l.tar.gz
tar zxf openssl-1.0.2l.tar.gz 
cd openssl-1.0.2l
./config -fPIC --prefix=/usr/local/openssl/ enable-shared && make && make install
           

        如果不手工安装1.0.2版本的openssl,则会在编译时报以下的错误:

FreeSwitch在银河麒麟操作系统上的编译

        第三步,源码安装libsndfile-1.0.28.tar.gz,下载地址:http://www.mega-nerd.com/libsndfile/#Download ,下载后按照./configure,make, make install三部曲完成即可,不做这步,后续编译会报如下错误:

FreeSwitch在银河麒麟操作系统上的编译

        第四步,打开源码目录的module.conf文件,屏蔽掉mod_opus这行,如果步屏蔽,会在后面的freeswitch模块编译中报错,主要这个模块也没什么用处。

FreeSwitch在银河麒麟操作系统上的编译

          第五步,打开源码根目录下面的makefile文件,加入如下的参数:

FreeSwitch在银河麒麟操作系统上的编译

        如果不加这个参数的话,会在编译时报如下的错误:

from incompatible pointer type [-Werror=incompatible-pointer-types] 
           

        完成以上的步骤后,就可以对freeswitch进行常规的三部曲编译了。

./configure
make
make install
           

      正常情况,编译应该没有什么问题了,但是环境不同,版本不同,可能朋友们在编译的时候会碰到其他的一些问题,大家可以关注我交流,最后希望我们的国产操作系统越来越成熟!

继续阅读