1. 程式人生 > >librtmp 64位編譯過程

librtmp 64位編譯過程

編譯方式:1.mingw, 2. visual studio編譯工具編譯;
說明:
1.mingw 的方法比較簡單,下載64位的mingw ,新版的mingw 和msys是分開的,但是不影響,配置好環境變數,進入msys 編譯介面,熟悉linux 的基本沒有問題。
2. 第二種方式,需要安裝ActivePerl 和nasm,這個主要是windows 下的perl 指令碼和nmake作用,都需要注意的是,設定環境變數。

nasm-2.10.01-installer:
http://www.nasm.us/pub/nasm/releasebuilds
下載版本需要注意的是,ActivePerl版本和 openssl版本的對應關係,openssl最新的程式碼要求perl版本5.10, 而 ActivePerl最新版本沒有那麼高的perl指令碼,這是外國人對國內技術的封鎖表現,都是用他們用舊了的版本。

編譯:
主要講解openssl 編譯,這個編譯過了,後面的問題就很好解決,這裡講的是第二種編譯,通過visual studio編譯工具。
首先,在PC的左下角的啟動項中,找到“所有程式”,在程式中找到“Microsoft Visual Studio XX ”點開,找到“Visual Studio Tools” 點開,這個時候是選擇編譯版本,編譯32位的部落格很多,需要編譯64位的,點開X64,進入後臺編譯介面。
其次,cd 進入你的“Visual Studio”安裝目錄,選擇你安裝的最高版本,進入…/VC/bin/目錄下。 此時,如果是32位,直接輸入vcvars32bat 按Enter 執行。如果是64位的,再進入../VC/bin/amd64目錄,vcvars64.bat 按Enter執行。

再次,切換目錄,進入openssl 目錄,通過Perl指令碼啟動Configure檔案;
32位的輸入 perl Configure debug-VC-WIN32 no-asm –prefix=”X:\openssl\lib” //debug版本。lib是自己手動建立的目錄,是放編譯後的庫用的
perl Configure VC-WIN32 no-asm –prefix=”X:\openssl\lib”
//relase版本
注意 64位的變化:
perl Configure VC-WIN64A no-asm –prefix=”X:\openssl\lib”

接著
啟動.bat檔案
32位 ms\do_ms.bat
64位 ms\do_win64a.bat

靜態庫
nmake -f ms\nt.mak
nmake -f ms\nt.mak install

動態庫
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak install

zlib 的編譯資料很少,因為簡單,我這裡也簡單說一下
下載的zlib是直接可以用visual studio開啟的,直接編譯的,但是需要注意幾點:
首先要找到啟動VS 的*.sln檔案
目錄為::zlib-xxx\contrib\vstudio
根據自己的VS 版本選擇最高的版本,啟動visual studio
注意,選擇VS的版本,一般預設是32位的,64位的需要新建一個,具體步驟網上查一下,這裡切到X64,也就是64位編譯,選擇zlibstat 專案編譯,看編譯完後的資訊,可以找到庫位置。zlib-xxx\contrib\vstudio\vc12\x64\ZlibStatDebug
參考網址:
http://www.cnblogs.com/MrOuqs/p/5751485.html

librtmp編譯要繁瑣一些,主要是解決錯誤,主要原因是這個庫提供的是linux 版本,編譯windwos版本需要做平臺糾錯。
先用visual studio建立編譯動態庫或者靜態庫的工程,匯入前面編譯的openssl 庫和zlibstat庫,匯入相關庫的標頭檔案和動態庫、靜態庫,再設定visual studio 的匯入庫標頭檔案地址、庫地址、庫名等,如果不會網上查一下。平臺切到X64

上面說了糾錯是主要任務,這裡就不一一說,糾錯可以檢視網址:https://blog.csdn.net/fireroll/article/details/8607927
這裡說一下,如果上面沒有的,或者比較特別的錯誤,一般都是庫的錯誤,需要自己去檢視一下,說幾個比較少見的錯誤,上面的網址沒有
HMAC_CTX *ctx;的HMAC_CTX沒有定義,這個錯誤,如果自己改庫,那就錯了,這是openssl庫的問題,檢視一下這個庫,編譯是否正確,對應的32位還是X64的。標頭檔案是否遺漏等;
MDH *dh錯誤也是openssl 庫問題;這個是openssl 的crypto庫問題在visual studio 的預處理設定NO_CRYPTO,錯誤就去掉了

off_t off;這個錯誤主要是zlibstat庫的問題,這個問題需要檢查zlibstat庫的標頭檔案,因為zlibstat沒有歸納標頭檔案,所以,只要把專案下的*.h標頭檔案拷貝到專案下,設定好路徑,就能解決。