1. 下载源码

https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.7.-release.tar.gz

2. 编写交叉编译脚本build.sh

#!/bin/bashexport ROOTDIR=$(cd `dirname $0`; pwd)export INSTALL_PREFIX=/data/freeswitch2
export EXTERNAL_PREFIX=/data/ext-freeswitch2
export TCHAIN_PREFIX=/opt/aarch64/aarch64-buildroot-linux-gnu/sysroot
export TCHAIN=${TCHAIN_PREFIX}/../../bin/aarch64-linuxexport CC="${TCHAIN}-gcc"
export CXX="${TCHAIN}-g++"
export AR=${TCHAIN}-ar
export LD=${TCHAIN}-ldexport CFLAGS=" \-O2 -g \-DGRANDSTREAM_NETWORKS \-DHAVE_NETINET_IN_H \-DSWITCH_DEBUG_RWLOCKS \-Wno-error \-Wno-pedantic \-Wno-unused-value \-Wno-error=pedantic \-Wno-error=attributes \-Wno-error=unused-value \-Wno-error=sequence-point \-Wno-error=unused-variable \-Wno-error=unused-but-set-variable \-Wno-error=declaration-after-statement \-DHAVE_PTHREAD_MUTEX_RECURSIVE \-I${TCHAIN_PREFIX}/usr/include \-I${TCHAIN_PREFIX}/usr/include/uuid \-I${TCHAIN_PREFIX}/../../include \-I${TCHAIN_PREFIX}/usr/include/glib-2.0/glib \-I${TCHAIN_PREFIX}/usr/lib/glib-2.0/include \-I${EXTERNAL_PREFIX}/include \-I${INSTALL_PREFIX}/include \-I${INSTALL_PREFIX}/include \-I${INSTALL_PREFIX}/include/sofia-sip-1.13"export CXXFLAGS="${CFLAGS}"export CPPFLAGS="${CFLAGS}"export LDFLAGS=" \-L${TCHAIN_PREFIX}/usr/lib \-L${TCHAIN_PREFIX}/usr/lib64 \-L${EXTERNAL_PREFIX}/lib \-L${INSTALL_PREFIX}/lib \-Wl,-rpath=${INSTALL_PREFIX}/lib \-Wl,-rpath-link=${INSTALL_PREFIX}/lib \-Wl,-rpath-link=${TCHAIN_PREFIX}/usr/lib \-Wl,-rpath-link=${TCHAIN_PREFIX}/usr/lib64 \-Wl,-rpath-link=${EXTERNAL_PREFIX}/lib"export PKG_CONFIG_PATH="${INSTALL_PREFIX}/lib/pkgconfig:${TCHAIN_PREFIX}/usr/lib/pkgconfig:${TCHAIN_PREFIX}/usr/lib64/pkgconfig:${EXTERNAL_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH}"
export FONTCONFIG_CFLAGS=" \-I${TCHAIN_PREFIX}/usr/include \-I${TCHAIN_PREFIX}/../../include \-I${TCHAIN_PREFIX}/usr/include/uuid \-I${EXTERNAL_PREFIX}/include"
export FONTCONFIG_LIBS=" \-L${TCHAIN_PREFIX}/usr/lib \-L${TCHAIN_PREFIX}/usr/lib64 \-L${EXTERNAL_PREFIX}/lib"./rebootstrap.sh
./configure \--prefix=${INSTALL_PREFIX} \--build=aarch64-linux-gnu \--host=aarch64-linux \--target=aarch64-linux-gnu \--with-openssl=${INSTALL_PREFIX} \--without-png \--disable-srtp \--disable-libvpx \--without-freetype \ac_cv_file__dev_ptmx=yes \ac_cv_file__dev_urandom=yes \ac_cv_func_setpgrp_void=yes \ac_cv_file__dev_zero=yes \ac_cv_func_malloc_0_nonnull=yes \ac_cv_func_realloc_0_nonnull=yes \ac_cv_tcp_nodelay_inherited=yes \enable_core_odbc_support=no \ac_cv_func_pthread_rwlock_init=yes //解决apr库中读写锁操作检查失败,导致移植成功后不能处理呼叫问题

3. 编译错误

3.1. apr报错(1)

checking 3rd argument to the gethostbyname_r routines... char
checking if TCP_NODELAY setting is inherited from listening sockets... (cached) yes
checking if O_NONBLOCK setting is inherited from listening sockets... yes
checking whether TCP_NODELAY and TCP_CORK can both be enabled... configure: error: in `/root/project/voip/freeswitch-1.10.7/libs/apr':
configure: error: cannot run test program while cross compiling
See `config.log' for more details
configure: error: ./configure.gnu failed for libs/apr
  • vim libs/apr/configure.ac,注释掉APR_CHECK_TCP_NODELAY_INHERITED和APR_CHECK_TCP_NODELAY_WITH_CORK,如下所示
  • 1960 #APR_CHECK_TCP_NODELAY_INHERITED
    1961 APR_CHECK_O_NONBLOCK_INHERITED
    1962 #APR_CHECK_TCP_NODELAY_WITH_CORK
    
  • 重新运行build.sh脚本

3.2. apr报错(2)

network_io/unix/sockets.c: In function ‘apr_socket_accept’:
network_io/unix/sockets.c:234:30: error: #if with no expression#if APR_TCP_NODELAY_INHERITED^
/root/project/voip/freeswitch-1.10.7/libs/apr/build/apr_rules.mk:201: recipe for target 'network_io/unix/sockets.lo' failed
  • 修改libs/apr/include/apr.h.in,注释APR_TCP_NODELAY_INHERITED,如下:
  • 245 #define APR_TCP_NOPUSH_FLAG       @apr_tcp_nopush_flag@
    246
    247 /* Is the TCP_NODELAY socket option inherited from listening sockets?
    248 */
    249 //#define APR_TCP_NODELAY_INHERITED @tcp_nodelay_inherited@
    250
    251 /* Is the O_NONBLOCK flag inherited from listening sockets?
    252 */
    253 #define APR_O_NONBLOCK_INHERITED @o_nonblock_inherited@
  • 重新执行build.sh脚本

3.3. apr-util报错

checking for libpq-fe.h... no
checking for dbd/apr_dbd_mysql.c... configure: error: cannot check for file existence when cross compiling
configure: error: ./configure.gnu failed for libs/apr-util
  • 修改libs/apr-util/configure.ac,注释APU_CHECK_DBD_MYSQL,如下所示
  • 124 APU_CHECK_DBM
    125 APU_CHECK_DBD
    126 #APU_CHECK_DBD_MYSQL
    127 APU_CHECK_DBD_SQLITE3
    128 APU_CHECK_DBD_SQLITE2
    129 APU_FIND_EXPAT
    130 APU_FIND_ICONV
  • 重新执行build.sh

3.4. switch_core_media.c报错

src/switch_core_media.c: In function ‘switch_core_media_add_crypto’:
src/switch_core_media.c:1396:2: error: unknown type name ‘bool’bool multiple_keys = false;^~~~
src/switch_core_media.c:1396:23: error: ‘false’ undeclared (first use in this function)bool multiple_keys = false;^~~~~
src/switch_core_media.c:1396:23: note: each undeclared identifier is reported only once for each function it appears in
src/switch_core_media.c:1490:20: error: ‘true’ undeclared (first use in this function)multiple_keys = true;
  • 添加#include <stdbool.h>头文件即可

3.5. src/switch_rtp.c报错

make  all-recursive
make[1]: Entering directory '/Asterisk/project/voip/freeswitch-1.10.7'CC       src/libfreeswitch_la-switch_core_media.loCC       src/libfreeswitch_la-switch_rtp.lo
In file included from /root/project/voip/freeswitch-1.10.7/libs/srtp/crypto/include/datatypes.h:49:0,from /root/project/voip/freeswitch-1.10.7/libs/srtp/crypto/include/rdbx.h:50,from /root/project/voip/freeswitch-1.10.7/libs/srtp/include/srtp_priv.h:52,from src/switch_rtp.c:49:
/root/project/voip/freeswitch-1.10.7/libs/srtp/crypto/include/integers.h:100:16: error: conflicting types for ‘uint64_t’typedef double uint64_t;^~~~~~~~
In file included from /opt/rk3328/rk64bit/aarch64-buildroot-linux-gnu/sysroot/usr/include/stdint.h:37:0,from /opt/rk3328/rk64bit/lib/gcc/aarch64-buildroot-linux-gnu/6.4.0/include/stdint.h:9,from /opt/rk3328/rk64bit/aarch64-buildroot-linux-gnu/sysroot/usr/include/inttypes.h:27,from ./src/include/switch_platform.h:122,from ./src/include/switch.h:112,from src/switch_rtp.c:34:
/opt/rk3328/rk64bit/aarch64-buildroot-linux-gnu/sysroot/usr/include/bits/stdint-uintn.h:27:20: note: previous declaration of ‘uint64_t’ was heretypedef __uint64_t uint64_t;^~~~~~~~
In file included from /opt/aarch64/aarch64-buildroot-linux-gnu/sysroot/usr/include/arpa/inet.h:22:0,from ./src/include/switch_platform.h:124,from ./src/include/switch.h:112,from src/switch_rtp.c:34:
src/switch_rtp.c: In function ‘rtcp_generate_sender_info’:
src/switch_rtp.c:1857:62: error: invalid operands to binary << (have ‘double’ and ‘int’)sr->ntp_lsw = htonl((u_long)(ntp_usec*(double)(((uint64_t)1)<<32)*1.0e-6)); /* convert microseconds to fraction of 32bits and store result in "least significatn word" */~~~~~~~~~~~~~^
Makefile:2412: recipe for target 'src/libfreeswitch_la-switch_rtp.lo' failed
make[1]: *** [src/libfreeswitch_la-switch_rtp.lo] Error 1
make[1]: Leaving directory '/Asterisk/project/voip/freeswitch-1.10.7'
  • 将libs/srtp/crypto/include/integers.h中typedef double uint64_t;修改为:typedef unsigned long uint64_t;

3.6. 修改modules.conf,注释如下内容

#applications/mod_enum
#applications/mod_signalwire
#codecs/mod_h26x
#codecs/mod_opus
#endpoints/mod_verto
#languages/mod_lua

记:freeswitch-1.10.7 aarch64交叉编译相关推荐

  1. Linux aarch64交叉编译之 mesa图形库

    对于mesa的交叉编译.该文章的目标是编译一套aarch64 Linux Debian嵌入式版本上可以运行的版本库,接下来就开始趟坑.老套路,先把linux桌面版搞好,然后 移植到嵌入式Linux D ...

  2. 挨踢人生路--记我的10年18家工作经历 - 后记

    挨踢人生路--记我的10年18家工作经历 - 前言 挨踢人生路--记我的10年18家工作经历 - 从大学说起――不得不说的一些事情 挨踢人生路--记我的10年18家工作经历 - 第1家公司,在老家的工 ...

  3. 挨踢人生路--记我的10年18家工作经历 - 第16家公司,英国公司――第一次当经理...

    挨踢人生路--记我的10年18家工作经历 - 前言 挨踢人生路--记我的10年18家工作经历 - 从大学说起――不得不说的一些事情 挨踢人生路--记我的10年18家工作经历 - 第1家公司,在老家的工 ...

  4. CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面1--安装脚本

    CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面1--安装脚本 1.开启的FreeSWITCH的模块列表 2.安装方法 (1)安装所需的RPM包 (2)安装FreeS ...

  5. CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面18--内网的讯时FXO网关SIP对接到内网的FreeSWITCH

    CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面6-内网讯时FXO网关SIP对接到内网的FreeSWITCH 1.FXO网关呼入到FreeSWITCH自动话务台 (1 ...

  6. CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面20--FreeSWITCH通过域名注册

    CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面20-FreeSWITCH通过域名注册 1.修改域名A记录 1.添加域 2.添加配置文件 3.添加分机号码 (1)添加 ...

  7. CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面5--阿里云服务器设置

    CentOS7和CentOS8 FreeSWITCH 1.10.7 简单图形化界面5--阿里云服务器设置 1.添加ACL 2.添加域(domains) 3.添加SIP配置文件(sip_profiles ...

  8. Linux aarch64交叉编译之 weston窗口管理程序

    对于weston的交叉编译.该文章的目标是编译一套aarch64 Linux Debian嵌入式版本上可以运行的版本库以及相关程序,接下来就开始趟坑.老套路,先把linux桌面版搞好,然后 移植到嵌入 ...

  9. 2016年8月10日 星期三 --出埃及记 Exodus 16:10

    2016年8月10日 星期三 --出埃及记 Exodus 16:10 While Aaron was speaking to the whole Israelite community, they l ...

最新文章

  1. python将视频转为多个gif
  2. 模拟器genymotion的安装与配置
  3. 玩了一把WOW,贴几张图上来,当然只是私服哈!
  4. 高效实用Kafka-Kafka是什么
  5. XPath 获取两个node中间的HTML Nodes
  6. 索引器(C# 编程指南)
  7. 已有一个名为“frmadd”的组件。组件的名称必须是唯一的,而且名称必须不区分大小
  8. Java编程题——判断年份是否为闰年
  9. html快闪软件制作,阿勇pr:如何使用pr快闪模板快速制作出快闪视频
  10. VC6 SDK 下载
  11. 注册DLL文件命令的使用方法及详细说明
  12. 红帽linux开启vnc服务器,红帽Linux上使用VNC
  13. 百度百城优品微信商城上线
  14. itunes更新失败卸载失败(AppleMobileDeviceSupport6464安装时回滚的解决办法)
  15. 五子棋项目结束总结_五子棋项目总结
  16. 二级页表分页存储需要目录页表数形象解释
  17. 如何搞定笔记本检测不到wifi,图标,Netkeeper链接不上
  18. sht11湿度程序c语言,温湿度传感器 sht11 仿真程序下载
  19. 显示农历天气时钟小部件下载_iOS端当前最火的四款时钟APP小组件评测
  20. 8421码,5421码,2421码和余3码的分类及转换

热门文章

  1. Makefile详解
  2. 软件需求分析知识点总结
  3. TL437x-IDK基于AM437x的FPGA与ARM通信测试
  4. 国美“曲线救国”:国美快递能撑起“真快乐”的零售帝国吗?
  5. 加密货币--Cryptocurrency
  6. 手机发射功率技术分析
  7. Cocos2d游戏开发学习记录——4.开发《植物大战僵尸》
  8. 使用AnalyticDB MySQL创建数据库及表过程
  9. 获取osc动弹中人员的用户名,并@他,so easy
  10. python数字加千分符 逗号