默认下载下来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/s

本文介绍了在编译和运行freeswitch中遇到的esl子目录相关错误,包括头文件未找到和函数定义缺失的问题。解决方法涉及修改Makefile,添加链接库,并使用nm命令查找函数定义。在运行阶段,还解决了因连接localhost导致的'connection refused'错误,需使用实际IP地址进行连接。

1445

被折叠的 条评论
为什么被折叠?



