.編譯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 <iostream>
#include <eXosip2/eXosip.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
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 的順序
出現一大堆連接錯誤,逐一分析如下
錯誤一
解決: 用到了 pthread 線程庫, 需要連接libpthread
g++ test.cpp -o demo -leXosip2 -I /home/sip/include -L /home/sip/lib -losip2 -losipparser2 -leXosip2 lpthread
錯誤二
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
錯誤三
進入到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