2017-09-27 8 views
0

J'essaye de compiler librtmp pour que je puisse créer FFmpeg avec le support RTMP pour le processeur ARM.Problème lors de la tentative de compilation de FFmpeg pour ARM avec le support librtmp

J'ai déjà la chaîne d'outils, et la construction en solo de FFmpeg a également été couronnée de succès, et le test à l'intérieur du processeur ARM a également été un succès.

Ma compréhension:

- Ffmpeg 
-- Librtmp 
--- Openssl 
--- zlib 

Cette hiérarchie est nécessaire pour construire FFmepg. Jusqu'à présent, j'ai construit openssl pour ARM, et zlib pour ARM, et, je peux le voir est situé dans le dossier de sortie ARM droite.

Pré-requis:

export LD_LIBRARY_PATH=/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib/ 
export CCPREFIX="/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/arm-unknown-linux-uclibcgnueabi-" 
export CFLAGS="-I/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/include" 
export LDFLAGS="-L/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib/" 

1- étapes pour construire zlib:

export CC=arm-linux-gcc 
./configure --prefix=/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr 
make 
make install 

2- étapes pour construire openssl:

export cross=arm-linux- 
./Configure dist --prefix=/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr 
make CC="${cross}gcc" AR="${cross}ar r" RANLIB="${cross}ranlib" 
make install 

3- étapes pour construire librtmp:

make CROSS_COMPILE=arm-linux- INC=-I/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/include LIB=-L/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib 

ci-dessus 1,2 étapes sont réussies, avec 3, je reçois ceci:

make CROSS_COMPILE=arm-linux- INC=-I/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/include LIB=-L/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib 
make[1]: Entering directory '/home/user/Downloads/ip_code/rtmpdump/librtmp' 
arm-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/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.0/../../../../arm-unknown-linux-uclibcgnueabi/bin/ld: cannot find -lssl 
/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.0/../../../../arm-unknown-linux-uclibcgnueabi/bin/ld: cannot find -lcrypto 
/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/bin/../lib/gcc/arm-unknown-linux-uclibcgnueabi/4.4.0/../../../../arm-unknown-linux-uclibcgnueabi/bin/ld: cannot find -lz 
collect2: ld returned 1 exit status 
Makefile:92: recipe for target 'librtmp.so.1' failed 
make[1]: *** [librtmp.so.1] Error 1 
make[1]: Leaving directory '/home/user/Downloads/ip_code/rtmpdump/librtmp' 
Makefile:76: recipe for target 'librtmp/librtmp.a' failed 
make: *** [librtmp/librtmp.a] Error 2 

mais dans le dossier de sortie, je peux voir les bons fichiers sont là:

[[email protected] rtmpdump]$ cd /opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr/lib 
[[email protected] lib]$ ls 
bin     libavcodec.a  libgmp.so.10.0.2 libz.so 
certs    libavdevice.a  libiberty.a  libz.so.1 
engines    libavfilter.a  libmpfr.la  libz.so.1.2.11 
gcc     libavformat.a  libmpfr.so  man 
include    libavutil.a  libmpfr.so.4  misc 
ldscripts   libcrypto.a  libmpfr.so.4.0.1 openssl.cnf 
lib     libfakeroot-0.so libpostproc.a  pkgconfig 
libaacplus.a   libfakeroot.la libssl.a   private 
libaacplus.la  libfakeroot.so libswresample.a share 
libaacplus.so  libgmp.la   libswscale.a 
libaacplus.so.2  libgmp.so   libx264.a 
libaacplus.so.2.0.2 libgmp.so.10  libz.a 
[[email protected] lib]$ 

Toute idée comment compiler?

Merci

+0

Les bibliothèques sont '.a', mais vous avez' -shared' sur la ligne de commande. Avez-vous partagé des fichiers ARM SSL '.so' disponibles sur la machine de construction? –

+0

Je ne le vois pas là. Juste pour le compiler, j'ai appelé Configure avec cette option: ./Configure dist --prefix =/opt/toolchain_gnueabi-4.4.0_ARMv5TE/usr, suivi de make et make install. Même après cela, je ne vois pas les fichiers dans le dossier ARM /opt/..../lib. Et j'ai essayé de trouver l'option -shared dans MAKEFILE de rtmpdump, mais il n'y a aucune mention de ceci là. Je me demande ce qui oblige rtmpdump/librtmp à le construire avec l'option -shared. – bcop

Répondre

0

Juste pour info: le rtmpdump est apparemment une exigence pour un autre OS ... Je compilé FFmpeg sans rtmpdump/librtmp hier, et dans les « protocoles activés » au moment de ./configure, je Très surpris, j'ai couru le FFmpeg compilé sur le périphérique ARM ciblé, et il fonctionne sans aucun problème: je suppose que le support était déjà là à l'intérieur de ffmpeg (pour ARM), pendant que je luttais avec rtmpdump.

Enabled protocols: 
async    httpproxy   rtmpte 
cache    https    rtmpts 
concat    icecast   rtp 
crypto    md5    srtp 
data    mmsh    subfile 
ffrtmpcrypt  mmst    tcp 
ffrtmphttp   pipe    tee 
file    prompeg   tls_openssl 
ftp    rtmp    udp 
gopher    rtmpe    udplite 
hls    rtmps    unix 
http    rtmpt 

Problème résolu!