Librtmp的交叉编译详解
最近在做一個網絡攝像頭RTMP推流項目,由于只需要rtmp一些基礎的連接,推流接口,所以只需要編譯Rtmpdump里面的librtmp庫。想要交叉編譯librtmp這個庫需要準備三樣東西:openssl,zlib,你自己的交叉編譯鏈。openssl,zlib是librtmp編譯所依賴的庫,openssl是有關數據加密的庫,zlib是有關數據壓縮的庫。如果你不需要這些或者不想這么麻煩可以參考https://blog.csdn.net/fteworld/article/details/51171731,根據他的方法可以免openssl,zlib編譯,如果編譯時仍出現zlib.h無法找到的報錯時,你可以把報錯的那個文件的#include <zlib.h>去掉,我試過報錯的文件是hashswf.c,直接把這個文件的#include <zlib.h>去掉就可以make過了。
話題拉回來正常交叉編譯librtmp庫需要四步:
根據你硬件芯片的不同,各個公司的SDK包里面都有提供相應的交叉編譯鏈,有些公司的交叉編譯鏈的安裝過程可能更加方便,你按照他的說明就可以了(用過海思的交叉編譯鏈安裝,只需要運行他的腳本就可以了很方便),我這里說的是一般的安裝方法。
①拿到你的交叉編譯鏈,命令tar -vxf 交叉編譯鏈.tar解壓。
②gedit /etc/profile修改環境變量,在最后增加export PATH=$PATH:/home/tang/Desktop/sample/rsdk-4.8.5-5281-EL-3.10-u0.9.33-m32fut-161202/bin注意$PATH:后面跟的是你自己交叉編譯鏈文件下的bin文件的路徑。
③source /etc/profile立即生效環境變量。
④確定交叉編譯環境構建成功與否
至此交叉編譯環境搭建完成了。
交叉編譯zlib庫
①可以通過http://zlib.net/官網下載或者命令wget http://zlib.net/zlib-1.2.11獲取zlib庫
②tar -vxf zlib-1.2.11解壓
③cd進zlib庫目錄輸入命令CC=mips-linux-gcc ./configure --prefix=/usr/local,注意給CC賦的是你自己的交叉編譯鏈名,給prefix賦的值是你想安裝的目錄,這個按自己的情況進行修改。
④make
⑤make install
交叉編譯openssl庫
①可以通過http://www.openssl.org官網下載或者命令wget http://www.openssl.org/source/openssl-1.0.1u獲取openssl庫
②tar -vxf openssl-1.0.1u解壓
③cd進openssl目錄輸入命令CC=mips-linux-gcc ./config no-asm shared --prefix=/usr/local,shared是生成動態鏈接庫的參數。
④make
⑤make install
⑥apt-get install libssl-dev
⑦gedit /etc/profile,在最后添加export C_INCLUDE_PATH=/usr/local/include/和export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include/,這兩個路徑是openssl的頭文件尋找路徑,因為我的安裝目錄在/usr/local下,所以在添加路徑之前確定你自己的openssl頭文件路徑。之后source /etc/profile立即生效變量環境。
交叉編譯librtmp庫
①librtmp庫可以通過git clone git://git.ffmpeg.org/rtmpdump從官網上下下來,不過我們只需要其中的librtmp,也可以到https://download.csdn.net/download/weixin_36983723/10743776直接下下來用。
②修改Makefile文件,將其中的CC=$(CROSS_COMPILE)gcc LD=$(CROSS_COMPILE)ld AR=$(CROSS_COMPILE)ar修改成你自己的交叉編譯鏈,例如我的就改成CC=mips-linux-gcc LD=mips-linux-ld AR=mips-linux-ar,當然如果嫌麻煩也可以在make的時候加參數make CROSS_COMPILE=mips-linux-。
修改CRYPTO=OPENSSL為CRYPTO=/usr/local/bin,同樣這里的路徑也是你openssl的安裝路徑下的bin文件。
③make && make install
總結
以上是生活随笔為你收集整理的Librtmp的交叉编译详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何高效解决PCBA高精密电阻开尔文测试
- 下一篇: springboot 腾讯云短信平台SD