centos7.3 编译exosip2 -5.1.0

.编译exosip - centos7.3

.编译环境

  • centos 7.3
  • gcc 4.8.5

1、下载:

链接:https://pan.baidu.com/s/1FNabcgatCvSKzX5fnU8EPw&shfl=sharepset
提取码:vpgh

libosip2-5.1.0.tar.gz
http://ftp.gnu.org/gnu/osip/

libexosip2-5.1.0.tar.gz
http://download.savannah.nongnu.org/releases/exosip/

c-ares-1.15.0.tar.gz
https://c-ares.haxx.se/

2、编译osip库

	 cd libosip2-5.1.0
	./configure --prefix=/home/sip/
	make
	make install

可选命令:

–-prefix=/home/sip/设置安装目录,make install时生成的文件会放在这里 –-disable-shared
禁止生成动态库,只生成静态库

3、编译exosip库

	cd  libexosip2-5.1.0
	./configure  --prefix=/home/sip/
	make
	make install

4、测试程序

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main()
{
        eXosip_t* sip = eXosip_malloc();
        if (eXosip_init(sip) == OSIP_SUCCESS)
        {
                std::cout << "exosip init success" << std::endl;
                if (eXosip_listen_addr(sip, IPPROTO_UDP, NULL, 8080, AF_INET, 0) == OSIP_SUCCESS)
                {
                        std::cout << "exosip listen addr success" << std::endl;
                }
        }
        eXosip_quit(sip);
        return 0;
}

5、错误处理

 g++ test.cpp -o demo -leXosip2 -I /home/sip/include -L /home/sip/lib -losip2 -losipparser2 -leXosip2  

注意 -losip2 -losipparser2 -leXosip2 的顺序

出现一大堆连接错误,逐一分析如下

错误一
centos7.3 编译exosip2 -5.1.0_第1张图片
解决: 用到了 pthread 线程库, 需要连接libpthread

  g++ test.cpp -o demo -leXosip2 -I /home/sip/include -L /home/sip/lib -losip2 -losipparser2 -leXosip2  lpthread

错误二
centos7.3 编译exosip2 -5.1.0_第2张图片

res_query,dn_expand两个函数是在glibc下面的libresolv库中实现的 ,编译时需要连接到libresolv.a

  g++ test.cpp -o demo -leXosip2 -I /home/sip/include -L /home/sip/lib -losip2 -losipparser2 -leXosip2  lpthread   -lresolv 

错误三
centos7.3 编译exosip2 -5.1.0_第3张图片
进入到exosip 目录, 执行 ./configure --help 查找ssl关键字 看到 :

--enable-openssl      enable support for openssl [default=yes] 
SSL_CFLAGS  		  C compiler flags for SSL, overriding pkg-config 
SSL_LIBS   			  linker flags for SSL, overriding pkg-config

exosip默认是开启 SSL的,所以在编译exosip库的时候需要指定 openssl的路径
如果openssl库位置不是默认,需另外定义

CFLAGS="-I/home/ssl/include"
LDFLAGS="-L/home/ssl/lib/"
LIBS="-lssl -lcrypto"

我这里不想使用ssl 所以编译命令如下
./configure --prefix=/home/sip --disable-openssl

最后:
最后:

 g++ test.cpp -o demo -I /home/sip/include -L /home/sip/lib -leXosip2  -losip2 -losipparser2  -lpthread -ldl -lresolv 

执行程序

./demo 

输出:

exosip init success!
exosip listen addr success

你可能感兴趣的:(GB/T28181,视频监控)