live555是一個很實用的項目,實現了rtsp服務器與客戶端的功能,作者還在維護,對於想學習這方面的人而言是一份很好的源碼。這裏介紹一下在Windows下的編譯過程。
進到源碼根目錄,先把win32config改了。將這一行:
!include <ntwin32.mak>
註釋掉,因爲這個文件在新的VC裏沒有了,即:
#!include <ntwin32.mak>
我使用的是VS2015,修改TOOLS32變量的值爲其安裝路徑
TOOLS32 = D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
接着cmd進入到源碼根目錄,運行:genWindowsMakefiles,這就在各個子目錄裏,產生了.mak文件
先把四個庫(liveMedia、groupsock、BasicUsageEnvironment、UsageEnvironment)編出來。方法是:
在cmd下運行批處理文件D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat,具體路徑是你的實際路徑。這樣保證nmake命令可用。
nmake -f 相應的名稱.mak
接着編譯live555MediaServer,進到mediaServer目錄,運行編譯命令:nmake -f mediaServer.mak
結果報錯:
-out:live555MediaServer.exe msvcirt.lib live555MediaServer.obj DynamicRTSPServer.obj ../liveMedia/libliveMedia.lib ../groupsock/libgroupsock.lib ../BasicUsageEnvironment/libBasicUsageEnvironment.lib ../UsageEnvironment/libUsageEnvironment.lib
文件名、目錄名或卷標語法不正確。
NMAKE : fatal error U1077: “-out:live555MediaServer.exe”: 返回代碼“0x1”
Stop.
這是由於註釋了這一行:!include <ntwin32.mak>,就沒有了$(link)變量,需要把這一句:
LINK = $(link) -out:
改爲:
LINK = link -out:
再編譯一次,又報錯:
LINK : fatal error LNK1181: 無法打開輸入文件“msvcirt.lib”
NMAKE : fatal error U1077: “"D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\link.EXE"”: 返回代碼“0x49d”
Stop.
這是因爲msvcirt.lib在新的VC裏面已經找不到了,將這一行:
LINK_OPTS_0 = $(linkdebug) msvcirt.lib
改爲:
LINK_OPTS_0 = $(linkdebug) msvcrt.lib ws2_32.lib
因爲用到socket的庫,所以還要加上ws2_32.lib,這樣就成功編譯出了live555MediaServer。
同樣的方法,可以編譯出testProgs。