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这样的,就是说数据要经过实际网卡,具体原因网上有讲到这里就不再赘述了

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 吃过敏药嗜睡乏力怎么办 写字紧张心跳的快手抖怎么办 怀孕食欲差没精神怎么办 爬个三楼就喘了怎么办 头被篮球砸了怎么办 打球手指肿了很久怎么办 客人吃饭跑单了怎么办 脑子总是记不住东西怎么办 穿的鞋有味道怎么办 生完孩子血糖高怎么办 生了孩子子宫大怎么办 生完孩子阴吹怎么办 怀孕初期感冒嗓子发炎怎么办 脑子转不过来弯怎么办 他说我道行不深怎么办 鞋子内测磨破了怎么办 老公拉肚子拉的很厉害怎么办 老公拉肚子拉得很厉害怎么办 和老公吵架很厉害怎么办 新鞋鞋底吱吱响怎么办 新鞋鞋底滑了怎么办 工作中同事不配合怎么办 做体力活一身疼怎么办 大脑左则中动脉血管狭窄?怎么办 儿童体质差免疫力差怎么办 nba篮球大师体力不够怎么办 一千米差10秒怎么办 四十岁以后体力和耐力差怎么办 打篮球一打比赛就紧张怎么办 耐克空军鞋鞋底边胶掉了怎么办 鞋底踩到老鼠胶怎么办 头蒙怎么办最快最有效 备孕老公压力大怎么办 宝宝太兴奋不睡怎么办 我很烦只睡三小时觉怎么办才好 柯基精力太旺盛怎么办 孩子学习熬夜精力不足怎么办 肺癌晚期吃不下饭怎么办 这俩天吃药太多肝肾功能不好怎么办 跑步跑得头疼晕怎么办 吃完辣的想吐怎么办