【问题标题】:Freeswitch ESL "cannot find -lesl"Freeswitch ESL“找不到-lesl”
【发布时间】:2015-03-28 03:30:37
【问题描述】:

我用 C 编写了一个简单的 ESL 应用程序。在编译“ld”时抱怨它找不到“-lesl”:

sudo gcc -o test_app main.c -lpthread -lm -lpq -lesl -L。 -Isrc/包含
/usr/bin/ld: 找不到 -lesl
collect2:错误:ld 返回 1 个退出状态

我搜索了“libesl.so”,但找不到这个。我确信我在编译 Freeswitch 时遗漏了一些东西。谁能指出,我错过了什么。谢谢。

【问题讨论】:

  • 当然我的意思是 Freeswitch ESL
  • 您是从 files.freeswitch.org/freeswitch-1.4.15.tar.bz2> 下载压缩包的吗?您是说 tarball 缺少库吗?根据您发布的命令行,您希望该库位于您编译的同一目录中。 (非常不可能的情况)
  • 您好,感谢您的回答。是的,我正在使用来自stash 的稳定 1.4 分支。我认为编译后的库绝不是 tarball 的一部分。只要该库在我的可用环境路径之一(恕我直言)中可用,它就应该工作。我正在关注此文档 BTW SangomaWiKi 。如果它有帮助,我在 freeswitch/libs/esl 下有自己的代码,示例程序 testserver.c 和 testclient.c 也驻留在其中

标签: c freeswitch


【解决方案1】:

第一步:

cd ${freeswitch_code_path}/libs/esl && make

第二步:

gcc -o test_app main.c ${freeswitch_code_path}/libs/esl/.libs/libesl.a -lpthread -lm -lpq  -Isrc/include

【讨论】:

  • 请考虑编辑您的答案并添加说明您的脚本如何解决问题。
【解决方案2】:

解决如下:

gcc -fPIC -g -c -Wall esl.c
gcc -fPIC -g -c -Wall esl_buffer.c    
gcc -fPIC -g -c -Wall esl_config.c
gcc -fPIC -g -c -Wall esl_event.c
gcc -fPIC -g -c -Wall esl_json.c
gcc -fPIC -g -c -Wall esl_threadmutex.c

gcc -shared -Wl,-soname,libesl.so.1 \
-o libesl.so.1.0.1 esl_buffer.o \
esl.o esl_config.o esl_event.o \
esl_json.o esl_threadmutex.o -lm 

[-lm 必须在行尾]

cp -p /usr/src/freeswitch/libs/esl/src/libesl.so.1.0.1 /usr/local/lib  
ln -s /usr/src/freeswitch/libs/esl/src/libesl.so.1.0.1 /usr/local  /lib/libesl.so.1
ln -s /usr/src/freeswitch/libs/esl/src/libesl.so.1 /usr/local/lib/libesl.so

echco '/usr/local/lib' > /etc/ld.conf.d/libesl.conf

run ldconfig

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多