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

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