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 <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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章