关闭

osip/exosip基础3:建立工程

标签: osip静态链接动态链接
74人阅读 评论(0) 收藏 举报
分类:

建立工程,做好调试osip的前期准备。
工程树结构如下:

cjd@cjd:~/sip$ tree -L 2
.
├── libeXosip2-4.1.0
│   ├── aclocal.m4
│   ├── AUTHORS
│   ├── autogen.sh
│   ├── ChangeLog
│   ├── configure
│   ├── configure.ac
│   ├── COPYING
│   ├── exosip-config.h.in
│   ├── help
│   ├── include
│   ├── INSTALL
│   ├── LICENSE.OpenSSL
│   ├── Makefile.am
│   ├── Makefile.in
│   ├── NEWS
│   ├── platform
│   ├── README
│   ├── scripts
│   ├── src
│   └── tools
├── libosip2-4.1.0
│   ├── aclocal.m4
│   ├── AUTHORS
│   ├── autogen.sh
│   ├── BUGS
│   ├── ChangeLog
│   ├── configure
│   ├── configure.ac
│   ├── COPYING
│   ├── FEATURES
│   ├── help
│   ├── HISTORY
│   ├── include
│   ├── INSTALL
│   ├── libosip2.pc.in
│   ├── Makefile.am
│   ├── Makefile.in
│   ├── NEWS
│   ├── osip-config.h.in
│   ├── platform
│   ├── README
│   ├── scripts
│   ├── src
│   └── TODO
├── makefile
├── osip
│   ├── bin
│   ├── include
│   ├── lib
│   └── share
└── src
    ├── main.cpp
    └── makefile

sip/makefile如下:
增加变量OSIPCONFIG为了判断是否需要去配置osip库,不然每次编译都去配置,比较耗时。

OSIPCONFIG = libosip2-4.1.0/Makefile
EXOSIPCONFIG = libeXosip2-4.1.0/Makefile

all:
ifneq ($(OSIPCONFIG), $(wildcard $(OSIPCONFIG)))
    cd libosip2-4.1.0/ && ./configure --prefix=/home/cjd/sip/osip/
endif   
    make -C libosip2-4.1.0/ && make -C libosip2-4.1.0/ install

ifneq ($(EXOSIPCONFIG), $(wildcard $(EXOSIPCONFIG)))
    cd libeXosip2-4.1.0/ && ./configure --prefix=/home/cjd/sip/osip/
endif   
    make -C libeXosip2-4.1.0/ && make -C libeXosip2-4.1.0/ install

    make -C src/


clean:
    make -C src/ clean

distclean:
    make -C libosip2-4.1.0/ distclean
    make -C libeXosip2-4.1.0/ distclean

sip/src/makefile如下

INCLUDE_PATH = -I../osip/include\
               -I../osip/include/osip2\
               -I../osip/include/osipparser2\
               -I../osip/include/eXosip2

LIB_PATH = -L../osip/lib
STATIC_LIB = -Wl,-Bstatic -leXosip2 -losipparser2 -losip2
SHARED_LIB = -Wl,-Bdynamic -lpthread -lresolv

all: Mysip

Mysip: main.o 
    g++ -o Mysip main.o $(LIB_PATH) $(STATIC_LIB) $(SHARED_LIB)

main.o:main.cpp
    g++ $(INCLUDE_PATH) -c main.cpp

clean:
    rm -r main.o Mysip

main.cpp示例

#include <iostream>
using namespace std;

#include "eXosip.h"

struct eXosip_t *context_eXosip;

int main()
{
    int lRet;
    context_eXosip = eXosip_malloc ();
    if (eXosip_init (context_eXosip))
    {
        cout << "eXosip_init failed" << endl;
        return 0;
    }
    return 0;
}

问题:
1、makefile中指定头文件的目录,应该每个目录前加-I,
2、判断文件是否存在,用这种方法还是挺简洁的,
ifneq ($(OSIPCONFIG), $(wildcard $(OSIPCONFIG)))
并且条件语句前无需输入tab。
3、链接时指定静态链接-Wl,-Bstatic,指定动态链接-Wl,-Bdynamic

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:406次
    • 积分:31
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档