pjsip学习笔记之一 –pjsip库编译及使用

最近出于兴趣,想学习下开源的sip协议栈,然找了不少文章,依然没有找到想要的答案。下面就pjsip的编译及使用进行说明:linux

  1. pjsip编译
    从pjsip官网()下载最新的源码,将其解压到linux下。 c++

    1) cd pjsip-xx
    2) ./configure 此处采用默认配置,若想进行一些配置,请查阅官网说明,此处主要是让一个新手可以快速上手,故不作深刻分析。
    3) 确认无误后执行 make dep&&make&&make install 4) 若无误则表示安装成功,pjlib生成的库文件位于/usr/local/lib,为了减小连接多个库文件,pjsip工程会生成一个配置文件/usr/local/lib/pkgconfig/libpjproject.pc。后续将会用到,其内容以下:web

# Package Information for pkg-config

prefix=/usr/local
exec_prefix=${prefix}
libdir=/usr/local/lib
includedir=/usr/local/include

Name: libpjproject
Description: Multimedia communication library
URL: http://www.pjsip.org
Version: 2.5
Libs: -L${libdir} -lpjsua2-i686-pc-linux-gnu -lstdc++ -lpjsua-i686-pc-linux-gnu -lpjsip-ua-i686-pc-linux-gnu -lpjsip-simple-i686-pc-linux-gnu -lpjsip-i686-pc-linux-gnu -lpjmedia-codec-i686-pc-linux-gnu -lpjmedia-i686-pc-linux-gnu -lpjmedia-videodev-i686-pc-linux-gnu -lpjmedia-audiodev-i686-pc-linux-gnu -lpjmedia-i686-pc-linux-gnu -lpjnath-i686-pc-linux-gnu -lpjlib-util-i686-pc-linux-gnu  -lsrtp-i686-pc-linux-gnu -lresample-i686-pc-linux-gnu -lgsmcodec-i686-pc-linux-gnu -lspeex-i686-pc-linux-gnu -lilbccodec-i686-pc-linux-gnu -lg7221codec-i686-pc-linux-gnu  -lpj-i686-pc-linux-gnu -lssl -lcrypto -lm -lrt -lpthread  -lasound  
Cflags: -I${includedir} -I/usr/local/include -DPJ_AUTOCONF=1   -O2 -DPJ_IS_BIG_ENDIAN=0 -DPJ_IS_LITTLE_ENDIAN=1
  1. pjsip库的使用
    做为一个新手,面对如此一个工程,真不知如何下手才好,总想有一个入门的使用示例可以指导,此处列出了官方的一个示例说明如何构建本身的工程。
    1) myapp.cpp
#include <pjlib.h>
#include <pjlib-util.h>
#include <pjmedia.h>
#include <pjmedia-codec.h>
#include <pjsip.h>
#include <pjsip_simple.h>
#include <pjsip_ua.h>
#include <pjsua-lib/pjsua.h>
int main()
{
    printf("test lib ok \n");
    return 0;
}

2) makefileapp

# If your application is in a file named myapp.cpp or myapp.c
# this is the line you will need to build the binary.
all: myapp

myapp: myapp.cpp
        $(CC) -o $@ $< `pkg-config --cflags --libs libpjproject`

clean:
        rm -f myapp.o myapp

3) 将/usr/local/lib/pkgconfig/libpjproject.pc拷贝至你的工程,即代码路径下
4) 编译便可。ide


2016/7/30svg