系统环境:ubuntu虚拟机: ubuntu-16.04.6-desktop-amd64
freeswitch-1.8.5.tar.xz http://files.freeswitch.org/freeswitch-releases/
#apt-get update
#apt-get install -y autoconf git libtool g++ zlib1g-dev libjpeg-dev libsqlite3-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libldns-dev libedit-dev libssl-dev pkg-config yasm liblua50-dev libopus-dev libsndfile1-dev libpq-dev libreadline-dev lua5.2 lua5.2-doc liblua5.2-dev libtiff5 libtiff5-dev
#./configure
#make
报错:
make[4]: Entering directory '/home/root/code/freeswitch-1.8.5/src/mod/applications/mod_signalwire'
Makefile:930: *** You must install libks to build mod_signalwire. Stop.
make[4]: Leaving directory '/home/root/code/freeswitch-1.8.5/src/mod/applications/mod_signalwire'
Makefile:683: recipe for target 'mod_signalwire-all' failed
make[3]: *** [mod_signalwire-all] Error 1
make[3]: Leaving directory '/home/root/code/freeswitch-1.8.5/src/mod'
Makefile:591: recipe for target 'all-recursive' failed
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory '/home/root/code/freeswitch-1.8.5/src'
Makefile:3494: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/root/code/freeswitch-1.8.5'
Makefile:1255: recipe for target 'all' failed
make: *** [all] Error 2
解决步骤如下:
(1)自己下载编译好的cmake直接用
https://cmake.org/files/v3.13/cmake-3.13.3-Linux-x86_64.tar.gz
解压后配置好即可。值得注意的是,cmake不能单独拷贝出来使用,只能将解压后的bin目录下的cmake等可执行文件链接到系统环境变量PATH包含的目录下,否则会报错。
(2)下载并编译libks
cd /usr/local/src
git clone https://github.com/signalwire/libks.git
cd libks
cmake .
报错:
-- Checking for module 'uuid'
-- No package 'uuid' found
CMake Error at /home/root/tools/cmake-3.13.3-Linux-x86_64/share/cmake-3.13/Modules/FindPkgConfig.cmake:452 (message):
A required package was not found
Call Stack (most recent call first):
/home/root/tools/cmake-3.13.3-Linux-x86_64/share/cmake-3.13/Modules/FindPkgConfig.cmake:622 (_pkg_check_modules_internal)
cmake/FindUUID.cmake:15 (pkg_check_modules)
CMakeLists.txt:294 (include)
-- Configuring incomplete, errors occurred!
See also "/home/root/code/libks/CMakeFiles/CMakeOutput.log".
See also "/home/root/code/libks/CMakeFiles/CMakeError.log".
解决方法1:
apt-get install uuid
或
dpkg - i libuuid1_2.20.1-5.1ubuntu20.9_amd64.deb
错误依旧.
解决方法2:
下载并编译libuuid源码
https://jaist.dl.sourceforge.net/project/libuuid/libuuid-1.0.3.tar.gz
./configure
make
make install
重新执行libks的
cmake .
问题解决。然后执行
make
make install
(3)下载并编译signalwire-c
cd /usr/local/src
git clone https://github.com/signalwire/signalwire-c.git
cd signalwire-c
cmake .
报错:
CMake Error at CMakeLists.txt:168 (string):
string sub-command REPLACE requires at least four arguments.
-- Configuring incomplete, errors occurred!
See also "/home/root/code/signalwire-c/CMakeFiles/CMakeOutput.log".
阅读CMakeLists.txt,发现出问题的地方是使用git命令生成changelog的。对编译代码无影响。注释掉相关内容:
# Get git log info
#execute_process(COMMAND ${GIT_EXECUTABLE} log --no-merges --pretty=format:"%n [%an]%n * %s" --since="last month"
# OUTPUT_VARIABLE CHANGELOG
# WORKING_DIRECTORY .
# OUTPUT_STRIP_TRAILING_WHITESPACE)
#string(REPLACE "\"" "" CHANGELOG ${CHANGELOG})
## Create changelog
#file(WRITE changelog.Debian ${CHANGELOG_HEADER}\n${CHANGELOG}\n\n${CHANGELOG_FOOTER})
#execute_process(COMMAND ${GZIP_CMD} -f -9 -n changelog.Debian)
# Install changelog
#install(FILES "${CMAKE_BINARY_DIR}/changelog.Debian.gz" COMPONENT "runtime" DESTINATION "share/doc/${CPACK_DEBIAN_PACKAGE_NAME}")
重新执行
cmake .
make
make install
make clean 清除上次编译的中间文件
重新执行FreeSWITCH的
./configure
make
make install
//建立链接
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/local/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/local/bin/
//安装声音文件
make sounds-install
make moh-install
//以下高质量的声音文件可选择安装
make cd-sounds-install
make cd-moh-install
参考文章:
[Centos7 下安装freeswitch 1.8.5及遇到的问题](https://www.cnblogs.com/Lewis302/p/10466936.html)
[Centos7 下安装freeswitch 1.9 +x264+odbc mysql](https://blog.csdn.net/tidehc/article/details/86593130)