本文主要是根据网上  linux下编译eXosip、osip,以及UAC和UAS的例子   这篇文章是对编译过程中遇到问题的解决办法。

具体步骤都是按照链接文章中的步骤操作,但是编译 uac.c 和 uas.c 时,将会出现异常情况。

# gcc uac.c -o uac -losip2 -leXosip2 -lpthread

/usr/bin/ld: /tmp/cct9rgh2.o: undefined reference to symbol 'osip_message_set_body'
/usr/local/lib/libosipparser2.so.6: error adding symbols: DSO missing from command line

collect2: error: ld returned 1 exit status

文章中说“如果在运行过程中提示找不到libosip2.so.6等类似的提示,说明osip动态库的路径可能还没有包含进去,可以使用下面的命令手动包含动态库的路径#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib”

但本人在实际尝试后仍没有解决问题。

本人也尝试在网上寻找各种解决办法,最后受到 一个使用了 osip 和 eXosip 库的 UAC 代理客户端的演示程序   中的"编 译:g++ -I/usr/local/include -L/usr/local/lib ua_client.cpp -o ua_client -leXosip2 -losip2 -losipparser2 -lpthread" 编译过程的启发,在编译 uac.c 和 uas.c 时加上  -losipparser2  加载对应的 libosipparser2.so 库 得以解决。完整的编译命令是:

# gcc uac.c -o uac -losip2 -leXosip2 -lpthread  -losipparser2 

希望以上的讲解能对学习相同知识点的你们有所帮助,也非常感谢以下两位博主提供的帮助

https://www.cnblogs.com/elisha-blogs/p/3974534.html

https://blog.csdn.net/gxp/article/details/6868787



Logo

更多推荐