opal ptlib 的编译 和分析

VS2008下编译ptlibopal

Opal作为SIP协议栈和新的H323 议栈,而且以原来的确openh323开发人员为班底,在VoIP 有很大的潜力,由于早期研究过一些openh323,现在更喜欢SIP 议,所以初次下载来编译看看。

     境是:windows xp sp2加上VS2008TeamSuite

1        下载ptlibopal

ptlib 载:svn co https://opalvoip.svn.sourceforge.net/svnroot/opalvoip/ptlib/trunk/ ptlib

opal 载:svn cohttps://opalvoip.svn.sourceforge.net/svnroot/opalvoip/opal/trunk/opal

2         设置环境

1.          下载bison工具,解压到C盘, 目录为C:\Tools

2.          打工VS2008工具/选项/项目和解决方案/VC++  

Ø 可执 行文行目录加入:

          C:\Tools

          E:\Rooney\videoconf\opalvoip\project\ptlib\lib

E:\Rooney\videoconf\opalvoip\project\opal\lib

Ø 包含 文件目录加入

                  E:\Rooney\videoconf\opalvoip\project\ptlib\include

                  E:\Rooney\videoconf\opalvoip\project\opal\include

Ø 库文 目录加入:

                  E:\Rooney\videoconf\opalvoip\project\ptlib\lib

                  E:\Rooney\videoconf\opalvoip\project\opal\lib

3         编译ptlib

打开ptlib(当然是用VS2008),先在DEBUG模式下编译,如果DEBUG 了,RELEASE是应该没有问题。

1   直接编译configure

 般况下都可以顺利通过,编完之后,可以检查一下E:\Rooney\videoconf\opalvoip\project\ptlib目录下是不是多了一个configure.exe可执行文件

2   编译MergeSym

这时会出错:

Ø 一是找不 IPV6需的头文件和库(如说没有tpipv6.h文件),本来我是想用起IPV6,由于去微软网站下载新的SDK 上也没有相应的头文件,由于我放弃了IPV6(不知有没有谁能解决这问题,让ptlib IPV6),放弃IPV6的办法是:修改E:\Rooney\videoconf\opalvoip\project\ptlib\include\ptbuildopts.h(该文件是在编译ptlib时查找环境自动生成的)。红色部分为修改部分。 

/////////////////////////////////////////////////

//

// IP v6 Support

//

#ifndef _WIN32_WCE

#define P_HAS_IPV6 1

#endif // _WIN32_WCE

#if defined(_MSC_VER) && P_HAS_IPV6

#pragma include_alias(<winsock2.h>, <c:/program files/microsoft sdks/windows/v6.0A/include/winsock2.h>)

#pragma include_alias(<ws2tcpip.h>, <c:/program files/microsoft sdks/windows/v6.0A/include/ws2tcpip.h>)

#define P_WINSOCK2_LIBRARY "ws2_32.lib"

#endif

将上面的修改为:

/////////////////////////////////////////////////

//

// IP v6 Support

//

#ifndef _WIN32_WCE

#undef P_HAS_IPV6

//#define P_HAS_IPV6 1

#endif // _WIN32_WCE

#if defined(_MSC_VER) && P_HAS_IPV6

#pragma include_alias(<winsock2.h>, <c:/program files/microsoft sdks/windows/v6.0A/include/winsock2.h>)

#pragma include_alias(<ws2tcpip.h>, <c:/program files/microsoft sdks/windows/v6.0A/include/ws2tcpip.h>)

#define P_WINSOCK2_LIBRARY "ws2_32.lib"

#endif

Ø 二是居然 ”MergeSym”不是可执行命令,这在以为openh323是没有碰到的,由于我把生成的MergeSym.exe(在E:\Rooney\videoconf\opalvoip\project\ptlib\bin\MergeSym\Debug下)文件拷贝到E:\Rooney\videoconf\opalvoip\project\ptlib还是不报同样的错,我只能把MergeSym.exe拷贝到E:\Rooney\videoconf\opalvoip\project\ptlib\Lib,然后再去编译,终于通过了,本来相在VS项目中写入这样的脚本,但考虑ptlib项目是经常更新的,修改了就不同步了,由于只能记录下来,为下次编译作参考,这也是写这说明的重要原因。

3   直接编PTLib DLL 

4   直接编译PTLib Static 

5   检查文件,在目录E:\Rooney\videoconf\opalvoip\project\ptlib\Lib有文件如下: 

2008-04-01 14:55         1,661,440 MergeSym.exe

2008-04-01 14:58         3,632,128 PTLib DLL.bsc

2008-04-01 14:55        15,649,792 PTLib Static.

2008-04-01 14:57         3,659,264 PTLibd.dll

2008-04-01 14:57         4,388,654 PTLibd.exp

2008-04-01 14:57           134,144 ptlibd.idb

2008-04-01 14:57        10,760,684 PTLibd.ilk

2008-04-01 14:57        11,259,072 PTLibd.lib

2008-04-01 14:57        19,017,728 ptlibd.pdb

2008-04-01 14:55         1,043,456 ptlibsd.idb

2008-04-01 14:55        45,375,556 ptlibsd.lib

2008-04-01 14:55         3,993,600 ptlibsd.pdb

 

注意:

 

Configure 的 参数 可以设置:

.\configure--disable-ipv6 --disable-openssl--disable-java --disable-fax --disable-h323--disable-iax2  --disable-t38--disable-lids--disable-odbc   --disable-sdl  --disable-openldap  --disable-dsound  --disable-dshow--disable-vidfile  --disable-httpsvc--disable-httpforms--disable-ffvdev --disable-ftp --disable-telnet--disable-plugins

 

可能出现如下错误 

//编译时 出现错误 syslog.h 中 的 #define 的定义有换行 ,不能换行 。

错误        2        errorBK1506 : 无法打开文件“..\..\..\Lib\Debug\collect.sbr: No such fileordirectory        BSCMAKE

错误        1        errorC4335: 检测到 Mac 文件格式请将源文件转换为DOS 格式或 UNIX 格式       g:\SipMeeting\opal\Opal3.8_cs\ptlib\include\ptlib\syslog.h        1

错误        3        fatalerror LNK1104: 无法打开文件“ptlibsd.lib        MergeSym

opal的编译

4         编译opal

 opal并没有什么特别要注意的,打开opal(当然是用VS2008了),然后编译”OPALStatic””OPAL_dll”,都是DEBUG模式编译,不过这里也有一个问题是将“MergeSym.exe”拷贝到opal 前路径E:\Rooney\videoconf\opalvoip\project\opal下,编译后文件列表如下: 

2008-04-01 16:15        20,433,920 OPAL Static.bsc

2008-04-01 16:23         9,674,240 opald.dll

2008-04-01 16:23         8,378,443 opald.exp

2008-04-01 16:23           265,216 opald.idb

2008-04-01 16:23        24,929,504 opald.ilk

2008-04-01 16:23        21,732,876 opald.lib

2008-04-01 16:23        41,422,848 opald.pdb

2008-04-01 16:14         1,035,264 opalsd.idb

2008-04-01 16:14        97,162,546 opalsd.lib

2008-04-01 16:14         7,376,896 opalsd.pdb

2008-04-01 16:24         4,033,536 OPAL_dll.bsc

 

 

 

自己的编译:

.\configure--no-search --disable-java --disable-fax--disable-h323--disable-iax2 --disable-t38 --disable-lids --disable-mixer--disable-pcss--disable-ivr

然后直接编译

 

 









 

 

 转自:http://hi.baidu.com/liyong042/blog/item/f06e9d183a77ba5e42a9ad68.html

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