1. 程式人生 > >hi3516a之交叉編譯rtmpdump

hi3516a之交叉編譯rtmpdump

1.官網下載

[[email protected] rtmpdump]# git clone git://git.ffmpeg.org/rtmpdump

2.執行交叉編譯

[[email protected] rtmpdump]# make SYS=posix CROSS_COMPILE=arm-hisiv300-linux- INC=-I/usr/include

make[1]: Entering directory `/home/Hi3516A/Demo/rtmpdump/rtmpdump/librtmp'
arm-hisiv300-linux-gcc -Wall  -I/usr/include -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o rtmp.o rtmp.c
In file included from /usr/include/features.h:385:0,
                 from /usr/include/stdint.h:26,
                 from rtmp.c:26:
/usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory
 # include <gnu/stubs-32.h>
                           ^
compilation terminated.
make[1]: *** [rtmp.o] Error 1
make[1]: Leaving directory `/home/Hi3516A/Demo/rtmpdump/rtmpdump/librtmp'
make: *** [librtmp/librtmp.a] Error 2
[
[email protected]
rtmpdump]# yum install glibc-devel.i686

Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: mirrors.pubyun.com
 * extras: mirrors.btte.net
 * updates: mirror.neu.edu.cn
base                                                                                                                                                                    | 3.7 kB     00:00     
extras                                                                                                                                                                  | 3.4 kB     00:00     

updates        

/usr/include/openssl/opensslconf.h:31:2: error: #error "This openssl-devel package does not work your architecture?"
 #error "This openssl-devel package does not work your architecture?"
     

[[email protected] rtmpdump]# rpm -qa|grep ssl
openssl-devel-1.0.1e-30.el6.11.x86_64
openssl-1.0.1e-30.el6.11.x86_64
docbook-style-dsssl-1.79-10.el6.noarch
[

[email protected] rtmpdump]#  rpm -e --nodeps openssl-devel-1.0.1e-30.el6.11.x86_64
[[email protected] rtmpdump]# rpm -qa|grep ssl
openssl-1.0.1e-30.el6.11.x86_64
docbook-style-dsssl-1.79-10.el6.noarch
[[email protected] rtmpdump]#  rpm -e --nodeps openssl-1.0.1e-30.el6.11.x86_64
[[email protected] rtmpdump]# rpm -qa|grep ssl
docbook-style-dsssl-1.79-10.el6.noarch
[[email protected] rtmpdump]# 

/usr/include/bits/socket.h:427:23: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
rtmp.c:60:25: fatal error: openssl/ssl.h: No such file or directory
 #include <openssl/ssl.h>

[[email protected] rtmpdump]# make SYS=posix CROSS_COMPILE=arm-hisiv300-linux- INC=-I/home/srs/simple-rtmp-server/trunk/objs/openssl-1.0.1f/include/
make[1]: Entering directory `/home/Hi3516A/Demo/rtmpdump/rtmpdump/librtmp'
arm-hisiv300-linux-gcc -Wall  -I/home/srs/simple-rtmp-server/trunk/objs/openssl-1.0.1f/include/ -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o rtmp.o rtmp.c
rtmp.c: In function ‘RTMP_ReadPacket’:
rtmp.c:3552:7: warning: variable ‘didAlloc’ set but not used [-Wunused-but-set-variable]
   int didAlloc = FALSE;
       ^
arm-hisiv300-linux-gcc -Wall  -I/home/srs/simple-rtmp-server/trunk/objs/openssl-1.0.1f/include/ -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o log.o log.c
arm-hisiv300-linux-gcc -Wall  -I/home/srs/simple-rtmp-server/trunk/objs/openssl-1.0.1f/include/ -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o amf.o amf.c
arm-hisiv300-linux-gcc -Wall  -I/home/srs/simple-rtmp-server/trunk/objs/openssl-1.0.1f/include/ -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o hashswf.o hashswf.c
hashswf.c:69:18: fatal error: zlib.h: No such file or directory
 #include <zlib.h>
                  ^
compilation terminated.
make[1]: *** [hashswf.o] Error 1
make[1]: Leaving directory `/home/Hi3516A/Demo/rtmpdump/rtmpdump/librtmp'
make: *** [librtmp/librtmp.a] Error 2
[[email protected] rtmpdump]# 

cp libz.a /usr/local/lib
chmod 644 /usr/local/lib/libz.a
cp libz.so.1.2.8 /usr/local/lib
chmod 755 /usr/local/lib/libz.so.1.2.8
cp zlib.3 /usr/local/share/man/man3
chmod 644 /usr/local/share/man/man3/zlib.3
cp zlib.pc /usr/local/lib/pkgconfig
chmod 644 /usr/local/lib/pkgconfig/zlib.pc
cp zlib.h zconf.h /usr/local/include
chmod 644 /usr/local/include/zlib.h /usr/local/include/zconf.h

 3.直接進行編譯rtmpdump是不可行的,缺少openssl的支援

系統環境:CentOS 6.5 64位

OpenSSL原始碼包:http://www.openssl.org/source/openssl-1.0.1f.tar.gz

安裝zlib庫支援:

cd /usr/local/src

wget http://zlib.net/zlib-1.2.5.tar.gz

tar zxvf zlib-1.2.5.tar.gz

./configure && make && make install

安裝OpenSSL原始碼包:

wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz

tar zxvf openssl-1.0.1f

cd openssl-1.0.1f/
CC=arm-linux-gcc ./config no-asm shared --prefix=/opt/toolchains/arm-jyxtec-linux-gnueabi/arm-jyxtec-linux-gnueabi/
--prefix請自行指定

引數 : shared 是生成動態連線庫, –prefix 為安裝目錄,openssldir 是配置檔案目錄。
這樣生成的Makefile是不用修改的,直接

[[email protected] zlib-1.2.8]# CC=arm-hisiv300-linux-gcc ./config no-asm shared --prefix=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib

[[email protected] openssl-1.0.1p]#make

4.交叉編譯zlib

[[email protected] zlib-1.2.8]# wget http://zlib.net/zlib-1.2.8.tar.gz

[[email protected] zlib-1.2.8]# CC=arm-hisiv300-linux-gcc ./configure  --prefix=/opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib

[[email protected] zlib-1.2.8]# make 

[[email protected] zlib-1.2.8]# make install

ln -s libz.so.1.2.8 libz.so
ln -s libz.so.1.2.8 libz.so.1
arm-hisiv300-linux-gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o examplesh example.o -L. libz.so.1.2.8
arm-hisiv300-linux-gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzipsh minigzip.o -L. libz.so.1.2.8
arm-hisiv300-linux-gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o example64.o test/example.c
arm-hisiv300-linux-gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o example64 example64.o -L. libz.a
arm-hisiv300-linux-gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -I. -D_FILE_OFFSET_BITS=64 -c -o minigzip64.o test/minigzip.c
arm-hisiv300-linux-gcc -O3  -D_LARGEFILE64_SOURCE=1 -DHAVE_HIDDEN -o minigzip64 minigzip64.o -L. libz.a
[[email protected] zlib-1.2.8]# 
[[email protected] zlib-1.2.8]# make install
cp libz.a /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/lib
chmod 644 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/lib/libz.a
cp libz.so.1.2.8 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/lib
chmod 755 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/lib/libz.so.1.2.8
cp zlib.3 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/share/man/man3
chmod 644 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/share/man/man3/zlib.3
cp zlib.pc /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/lib/pkgconfig
chmod 644 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/lib/pkgconfig/zlib.pc
cp zlib.h zconf.h /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/include
chmod 644 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/include/zlib.h /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/include/zconf.h

5.交叉編譯rtmpdump

[[email protected] openssl-1.0.1p]# cp /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/include/* include/ -f
[[email protected] openssl-1.0.1p]# ls in
include/     install.com  
[[email protected] openssl-1.0.1p]# ls include/
openssl  zconf.h  zlib.h
[[email protected] openssl-1.0.1p]#

[[email protected] rtmpdump]# make SYS=posix CROSS_COMPILE=arm-hisiv300-linux- INC=-I/home/Hi3516A/demo/openssl-1.0.1p/include/
make[1]: Entering directory `/home/Hi3516A/demo/rtmpdump/librtmp'
arm-hisiv300-linux-gcc -Wall  -I/home/Hi3516A/demo/openssl-1.0.1p/include/ -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o hashswf.o hashswf.c
arm-hisiv300-linux-gcc -Wall  -I/home/Hi3516A/demo/openssl-1.0.1p/include/ -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_OPENSSL  -O2 -fPIC   -c -o parseurl.o parseurl.c
arm-hisiv300-linux-ar rs librtmp.a rtmp.o log.o amf.o hashswf.o parseurl.o
arm-hisiv300-linux-ar: creating librtmp.a
arm-hisiv300-linux-gcc -shared -Wl,-soname,librtmp.so.1  -o librtmp.so.1 rtmp.o log.o amf.o hashswf.o parseurl.o  -lssl -lcrypto -lz 
/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/../../../../arm-hisiv300-linux-uclibcgnueabi/bin/ld: cannot find -lssl
/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/../../../../arm-hisiv300-linux-uclibcgnueabi/bin/ld: cannot find -lcrypto
/opt/hisi-linux/x86-arm/arm-hisiv300-linux/bin/../lib/gcc/arm-hisiv300-linux-uclibcgnueabi/4.8.3/../../../../arm-hisiv300-linux-uclibcgnueabi/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status
make[1]: *** [librtmp.so.1] 錯誤 1
make[1]: Leaving directory `/home/Hi3516A/demo/rtmpdump/librtmp'
make: *** [librtmp/librtmp.a] 錯誤 2
[[email protected] rtmpdump]# 

[[email protected] openssl-1.0.1p]# cp libssl.so.1.0.0 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib
[[email protected] openssl-1.0.1p]# cp libcrypto.so.1.0.0 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib
[[email protected] openssl-1.0.1p]# 

[[email protected] lib]# pwd
/opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib

[[email protected] lib]# ln -s libcrypto.so.1.0.0 libcrypto.so

[[email protected] openssl-1.0.1p]# cd /opt/hisi-linux/x86-arm/arm-hisiv300-linux/target/lib/
[[email protected] lib]# cd lib
[[email protected] lib]# ls
libz.a  libz.so  libz.so.1  libz.so.1.2.8  pkgconfig
[[email protected] lib]# cp libz.so.1.2.8 /opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib
[[email protected] lib]# ln -s libz.so.1.2.8 libz.so
[[email protected] lib]# ln -s libz.so.1.2.8 libz.so.1
[[email protected] rtmpdump]# make SYS=posix CROSS_COMPILE=arm-hisiv300-linux- INC=-I/home/Hi3516A/demo/openssl-1.0.1p/include/

//總結:

主要依賴zlib、openssl,需要對以上兩庫進行交叉編譯,
將libz.so.1.2.8、libcrypto.so.1.0.0、libssl.so.1.0.0拷貝到/opt/hisi-linux/x86-arm/arm-hisiv300-linux/arm-hisiv300-linux-uclibcgnueabi/lib

6.交叉編譯rtmpdump(第5 步驟交叉編譯librtmp)

要使用最新的librtmp.a  librtmp.so.1

[[email protected] librtmp]# vi Makefile

[[email protected] librtmp]# cp ../rtmpdump/librtmp/librtmp.a ./librtmp
[[email protected] librtmp]# make clean all SYS=posix CROSS_COMPILE=arm-hisiv300-linux- INC=-I/home/Hi3516A/demo/openssl-1.0.1p/include/

相關推薦

hi3516a交叉編譯rtmpdump

1.官網下載 [[email protected] rtmpdump]# git clone git://git.ffmpeg.org/rtmpdump 2.執行交叉編譯 [[email protected] rtmpdump]# make SYS=p

buildroot交叉編譯環境

轉載: 前言:     為了搭建交叉編譯環境,查了很多的方法,有自己搭建的(高手),有的用cross-ng工具的等等,最後查到了buildroot這個工具,最後為啥選擇這個工具的原因是buildroot不僅能搭建交叉編譯環境,而且還能編譯核心,根檔案系統,可見功能的強

海思HI35xx平臺軟體開發快速入門交叉編譯鏈安裝

前言  海思平臺的軟體開發模式一般是宿主機編譯,目標板除錯的方式,故而我們需要在宿主機上安裝海思平臺的交叉編譯工具進行交叉編譯,最後利用交叉編譯工具編譯出來的可執行程式拷貝到目標板執行。交叉編譯鏈安裝  交叉編譯鏈安裝比較簡單,這裡以arm-hisiv200-linux交叉編

hi3516affmpeg x264交叉編譯

環境:centos_6.5_x86 交叉工具鏈:arm-hisiv300-linux- 步驟: 1.下載x264: # git clone git://git.videolan.org/x264.git 2.下載ffmpeg git clone git://sourc

【Cocos2d-x 3.0】遊戲開發android交叉編譯

plain edit 100% b2c 令行 sdk 自己的路 smi bin 作者:Senlern 轉載請註明,原文鏈接:http://blog.csdn.net/zhang429350061/article/details/37959489 在上

交叉編譯linux3.0.8錯誤loading shared libraries: libz.so.1cannot open shared object file: No such file

當我們安裝好交叉編譯器後,我們要對友善之臂提供的linux3.0.8進行編譯。 按下面步驟進行: $tar xzf linux-3.0.86-20150324.tgz $ cd linux-3.0.86/ $ cp tiny4412_android_defconfig .config $

解決問題帖--交叉編譯gdk-pixbufloaders.cache

對於這個問題發現了問題所在,提出了一個可用的爛補丁,給大家引出問題所在,拋轉引玉,希望大家給出一個更加完美的解決方案。 在交叉編譯gdk-pixbuf時可能會在配置時沒有問題,但是在Make時出現如下錯誤提示: No rule to make target '../gdk

嵌入式開發 入門篇(檔案傳輸、交叉編譯)

lock. config_ipu_di_clk: set pll5 clock to 297000000Hz. Found PFUZE100! deviceid=10,revid=11 Net: got MAC address from IIM: 00:00:00:00:00:00 FEC0 [PRIME

彙總(四):交叉編譯工具鏈arm-none-linux-gnueabi-, Qt交叉編譯安裝和移植,Qt桌面版編譯安裝,QTcreator安裝和配置

4. QTcreator2.5.2安裝和配置 首先,從官網下載了qt-creator-linux-x86-opensource-2.5.2.bin檔案。 下面的安裝就比較簡單了,首先更改檔案屬性,使它可執行。 chmod u+x qt-creator-linux

從零開始移植QT4.8.5四--交叉編譯QT程式並執行在OK6410上

首先我們需要自己寫一個程式碼,什麼 程式碼都行,拿來別人的也可以。可以在windows或者linux上寫都行,我個人的習慣是在windows下面編輯程式碼,檢視執行效果,效果沒問題了在拿到linux下進行交叉編譯。 下面我們現在windows下寫一個最簡單的例子:你好世界!

從零開始移植QT4.8.5三--linux下交叉編譯QT執行庫

這篇文章要實現的目標是在linux下交叉編譯QT在嵌入式裝置OK6410的執行庫,最終在OK6410上執行QT演示程式。 1、觸控式螢幕庫檔案安裝tslib 首先如果嵌入式裝置上有觸控式螢幕,需要先移植tslib,這個不是本次的重點,所以我們就直接搭建編譯的時候需要的tsl

流媒體直播二imx6 arm板的live555的交叉編譯

Author: CaoHu E-Mail: [email protected] Version:0.1 Date: 2018-01-29 10:28 Description: My level is limited, if

vsftp必要的安裝目錄與交叉編譯問題

高版本為何編譯不成功: 在版本比較高的vsftp原始碼中的Makefile中可能會有這麼一句話: LDFLAGS=-fPIE -pie -Wl,-z,relro -Wl,-z,now 如可此時交叉編譯,雖然可以編譯成功,但 file vsftpd 會發現,vsftpd是

RHEL6下友善交叉編譯工具的安裝

[[email protected] /]# export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin/ [[email protected] /]# arm-linux-gcc -v Using built-in specs. COL

Ubuntu16.4學習zedboard安裝交叉編譯環境和交叉編譯流程

上一篇中按照《嵌入式系統軟硬體協同設計實戰指南》配置之後發現並不好用,這次按照《xilinx zynq soc與嵌入式linux設計實戰指南》進行配置一、基本概念:1、交叉編譯:在一個平臺上上生成另一個平臺上可以執行的程式碼。2、通過交叉編譯工具可以在CPU能力很強、儲存空間

ARM編譯交叉編譯

gcc和arm-linux-gcc的常用選項gcc的使用方法:gcc [選項] 檔名 gcc常用選項:  -v:檢視gcc編譯器的版本,顯示gcc執行時的詳細過程  -o <file>                Place the output into &l

嵌入式開發Opencv(一)交叉編譯

參考文件 本文件涉及到的目標硬體為全志H8(8核Cortex-A7,Armv7架構),但是對其他Arm晶片也有一定的借鑑意義,只需要更換交叉編譯鏈即可。 開發環境介紹 主機作業系統:Ubuntu14.04 64位 目標平臺:BoxV3 全志H8 交叉

嵌入式深度學習mxnet交叉編譯Arm Linux

參考文件 本文件涉及到的目標硬體為全志H8(8核Cortex-A7,Armv7架構),但是對其他Arm晶片也有一定的借鑑意義,只需要更換交叉編譯鏈即可。 開發環境介紹 主機作業系統:Ubuntu14.04 64位 目標平臺:CQA83t 全志H8

使用scratchbox2建立交叉編譯環境

ips debian amp net 。。 dir tails details art 使用scratchbox2建立交叉編譯環境,使交叉編譯不再煩人。。。。。os:ubuntu 12.04.4 x641. 安裝相關工具sudo apt-get install deboot

防遺忘筆記,Fedora交叉編譯window下的virt-iewer的漢化

正常 後來 效果 cal 方法 dir 文件中 通過 應用 1. 漢化代碼裏的資源 virtviewer使用的是gettex的方案是標準的linux裏國際化的方案。按道理僅僅須要改動virtualviewer/po/zh_CN.po的文件。編譯。 然後確認在代碼裏設置好