我在C编写了一个简单的ESL应用程序,同时编译了#34; 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时我错过了一些东西。任何人都可以指出,我错过了什么。谢谢。
答案 0 :(得分:0)
解决如下:
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
答案 1 :(得分:0)
第一步:
cd ${freeswitch_code_path}/libs/esl && make
步骤 2:
gcc -o test_app main.c ${freeswitch_code_path}/libs/esl/.libs/libesl.a -lpthread -lm -lpq -Isrc/include