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
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? –
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