freeswitch里面的esl子目录相关错误解决(编译、运行)
来源:互联网 发布:矩阵图怎么做 编辑:程序博客网 时间:2024/05/16 19:06
默认下载下来freeswitch后,按照readme.md执行编译过,其实它下面有一个esl例子目录.../freeswitch/libs/esl/的内容不一定被编译到,需要进入这个子目录make一下,不过不幸的是,经常容易出错,例如下图就是常见的编译错误:
头文件没有找到,第一反应就是修改include目录,哪里改呢,就是Makefile文件,具体修改后面给出截图,然后第二个错误如下图
出错内容看,是testclient.c(笔者自己已经对testclient.c做了很多改写)里调用到了一些函数,例如switch_hash_core_delete没有找到对应的库文件(里面有这些函数的定义),那么首先想到的就是makefile里的ldflags之类的链接器选项不对,漏掉了相应的库文件定义,分两步走:
1. 首先要找到这些符号(函数)在哪里定义的,以switch_core_hash_delete为例,我们找到它的定义文件在../freeswitch/src/下面的switch_core_hash.c,这个目录下的文件位于顶层文件夹src下面,它们一般都被编译成(和其他子目录编译成的库)根目录下的总的库文件(mac下是.dylib文件),那么我们遵循这个思路找到../freeswitch/src/.libs/下面的libfreeswitch.dylib, 接下来用nm命令查看库文件里定义的符号 nm -g libfreeswitch.dylib, 找到了缺失的那些符号的定义。
2. 修改makefile,添加相应的的库文件到链接器的链接选项里,打开libs/esl/Makefilen文件,修改如下:
上面修改了两行,第一行就是第一个错误:找不到libteletone.h文件,第二行是针对第二个错误,修改完成,保存,编译成功
接下来尝试跑一下testserver.c,通常情况下,你会碰到‘connection refused‘的错误,这个错误,经过上网搜索,原因是:
tcp链接不能通过localhost而是要真是的ip地址譬如172.20.10.3这样的,就是说数据要经过实际网卡,具体原因网上有讲到这里就不再赘述了
- freeswitch里面的esl子目录相关错误解决(编译、运行)
- 使用esl控制freeswitch
- ACE编译运行错误解决
- FreeSWITCH ESL (Event Socket Library)
- FreeSWITCH 电话会议(ESL实现)
- FreeSWITCH ESL (Event Socket Library)
- centos6.5 编译安装lamp以及相关错误的解决
- 编译或运行时出现的错误及解决
- QT编译或运行时出现的错误及解决
- QT3编译或运行时出现的错误及解决
- Java命令行编译和运行的错误解决--classpath
- cocos2d-x编译时的一些错误解决,编译出错,运行错误
- linux下的Freeswitch,fusionpbx,以及对JAVA的ESL接口安装文档
- freeSWITCH 运行环境 及 编译安装
- android 编译STL模块相关错误解决
- android 编译STL模块相关错误解决
- xcode 编译库 相关错误 解决
- pjproject编译方法与相关错误解决
- Java中用正则表达式判断日期格式是否正确
- Python缩进和冒号详解
- mysql覆盖索引
- init.rc启动 shell脚本
- Container With Most Water--LeetCode
- freeswitch里面的esl子目录相关错误解决(编译、运行)
- Django: Hello world
- 集合浅析三:增强for循环
- 融云助制造业移动信息化建设 加速两化融合创新
- Linux应用程序设置进程调度策略
- JavaScript中的'use strict'
- android handle 消息发送和接受!!!!!
- Maven项目pom.xml各标签的含义
- 二叉树遍历