Linker 在FreeSwitch中加载mod_ilbc失败

Linker 在FreeSwitch中加载mod_ilbc失败,linker,codec,freeswitch,libtool,Linker,Codec,Freeswitch,Libtool,我以前成功安装过其他FS模块,但这个模块我无法修复。我会提供尽可能多的细节,这个问题可能不是一个具体的问题。如有任何一般故障排除建议,将不胜感激 环境如下图所示,我使用的是freeswitch-1.6.19源代码 $ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) $ ls /usr/lib64/ilbc2/ -lh total 64K lrwxrwxrwx. 1 root root 16 Oct 24 20:18

我以前成功安装过其他FS模块,但这个模块我无法修复。我会提供尽可能多的细节,这个问题可能不是一个具体的问题。如有任何一般故障排除建议,将不胜感激

环境如下图所示,我使用的是freeswitch-1.6.19源代码

$ cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)

$ ls /usr/lib64/ilbc2/ -lh
total 64K
lrwxrwxrwx. 1 root root  16 Oct 24 20:18 libilbc.so -> libilbc.so.0.0.2
lrwxrwxrwx. 1 root root  16 Sep 18 18:03 libilbc.so.0 -> libilbc.so.0.0.2
-rwxr-xr-x. 1 root root 64K Jun 23  2015 libilbc.so.0.0.2

$ nm -D /usr/lib64/ilbc2/libilbc.so
--- omitted many lines ----
0000000000007590 T ilbc_decode
0000000000007790 T ilbc_decode_init
0000000000007c30 T ilbc_encode
0000000000008f80 T ilbc_encode_init
--- omitted many lines ----
我采取以下步骤编译mod_ilbc:

取消对modules.conf中codecs/mod_ilbc行的注释 ./configure-prefix=/opt/freeswitch/ 制作 安装 修改/opt/freeswitch/etc/freeswitch/vars.xml以添加iLBC@30i到全局\u编解码器\u首选项。 启动自由开关。 以下是我看到事情进展顺利的证据:

使安装成功安装mod_ilbc。make进程成功地检测到libilbc并使用libtool链接。makeinstall的输出,请注意-L/usr/lib64/ilbc2-lilbc部分。 启动freeswitch时,它尝试使用dlfcn加载模块,但失败。freeswitch.log的输出:
在我看来,这是因为freeswitch未能链接/usr/lib64/ilbc2/libilbc.so,但为什么呢?如何进一步解决问题?

制定问题并将其写出来似乎有助于解决问题。问题现在解决了

一开始,我不知道需要哪个libilbc,所以我都是通过sudo-yum-install-ilbc-devel-ilbc2-devel安装的。后来当事情不顺利时,我遇到了这个问题,所以我通过sudo-yum-remove-ilbc-devel删除了它的版本1。但这并没有删除库文件


仍然存在/usr/lib64/libilbc.so.0.1和/usr/lib64/libilbc.so.0,freeswitch从它们那里寻找libilbc。砰

我发现ldd命令对调试这种库链接问题很有用。ldd/opt/freeswitch/lib/freeswitch/mod/mod_ilbc.so将显示加载模块所需的共享库的列表。@PhilippeSultan,这太棒了。ldd实际上经历了链接过程,所以我可以看到FS正在尝试链接到过时的so文件。下次会派上用场的。谢谢 making install mod_ilbc make[4]: Entering directory `/home/cenzhe.zhu/freeswitch-1.6.19/src/mod/codecs/mod_ilbc' make[5]: Entering directory `/home/cenzhe.zhu/freeswitch-1.6.19/src/mod/codecs/mod_ilbc' make[5]: Nothing to be done for `install-exec-am'. test -z "/opt/freeswitch/lib/freeswitch/mod" || /usr/bin/mkdir -p "/opt/freeswitch/lib/freeswitch/mod" /bin/sh /home/cenzhe.zhu/freeswitch-1.6.19/libtool --mode=install /usr/bin/install -c mod_ilbc.la '/opt/freeswitch/lib/freeswitch/mod' libtool: install: (cd /home/cenzhe.zhu/freeswitch-1.6.19/src/mod/codecs/mod_ilbc; /bin/sh /home/cenzhe.zhu/freeswitch-1.6.19/libtool --silent --tag CC --mode=relink gcc -I/usr/include/uuid -I/home/cenzhe.zhu/freeswitch-1.6.19/src/include -I/home/cenzhe.zhu/freeswitch-1.6.19/src/include -I/home/cenzhe.zhu/freeswitch-1.6.19/libs/libteletone/src -fPIC -Werror -Wno-unused-result -fvisibility=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 -g -ggdb -DHAVE_OPENSSL -Wall -std=c99 -pedantic -Wdeclaration-after-statement -I/usr/include/ilbc2 -g -O2 -avoid-version -module -no-undefined -shared -o mod_ilbc.la -rpath /opt/freeswitch/lib/freeswitch/mod mod_ilbc_la-mod_ilbc.lo /home/cenzhe.zhu/freeswitch-1.6.19/libfreeswitch.la -L/usr/lib64/ilbc2 -lilbc -lssl -lcrypto ) libtool: install: /usr/bin/install -c .libs/mod_ilbc.soT /opt/freeswitch/lib/freeswitch/mod/mod_ilbc.so libtool: install: /usr/bin/install -c .libs/mod_ilbc.lai /opt/freeswitch/lib/freeswitch/mod/mod_ilbc.la libtool: finish: PATH="/sbin:/bin:/usr/sbin:/usr/bin:/sbin" ldconfig -n /opt/freeswitch/lib/freeswitch/mod ---------------------------------------------------------------------- Libraries have been installed in: /opt/freeswitch/lib/freeswitch/mod $ nm -D /opt/freeswitch/lib/freeswitch/mod/mod_ilbc.so --- omitted many lines ---- 0000000000001060 T _fini w __gmon_start__ U ilbc_decode U ilbc_decode_init U ilbc_encode U ilbc_encode_init --- omitted many lines ---- 2017-10-25 13:54:24.243208 [CRIT] switch_loadable_module.c:1528 Error Loading module /opt/freeswitch/lib/freeswitch/mod/mod_ilbc.so **/opt/freeswitch/lib/freeswitch/mod/mod_ilbc.so: undefined symbol: ilbc_decode**