#!/bin/bash #+-------------------------------------------------------------------------------------------- #|Description: This shell script used download and compile gstreamer for ARM #| Author: GuoWenxue #| ChangeLog: #| 1, Initialize 1.0.0 on 2011.04.12 #+-------------------------------------------------------------------------------------------- QT_INST_PATH=/apps/QT5.9_A5 PREFIX_PATH=$QT_INST_PATH/gstreamer LYFTP_SRC=http://master.weike-iot.com:2211/src/ CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- mkdir -p $PREFIX_PATH function msg_banner() { echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" } function check_result() { if [ $? != 0 ] ; then echo "" echo "+-----------------------------------------------------------------------" echo "| $1 " echo "+-----------------------------------------------------------------------" echo "" exit ; fi } function export_cross() { # export cross toolchain export CC=${CROSS_COMPILE}gcc export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } function compile_gstreamer() { SRC_NAME=gstreamer-1.14.0 PACK_SUFIX=tar.xz if [ -f ${PREFIX_PATH}/lib/libgstreamer-1.0.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; fi if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " #wget https://gstreamer.freedesktop.org/src/gstreamer/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" fi msg_banner "Start decompress $SRC_NAME.${PACK_SUFIX} " if [ ! -d ${SRC_NAME} ] ; then tar -xJf ${SRC_NAME}.${PACK_SUFIX} fi cd ${SRC_NAME} msg_banner "Start cross compile $SRC_NAME " ./configure --prefix=${PREFIX_PATH}/ ${CONFIG_CROSS} --enable-plugin \ --disable-examples --disable-tests --disable-failing-tests --disable-benchmarks \ --disable-gtk-doc-htm --disable-check --disable-valgrind \ GLIB_CFLAGS=-I${PREFIX_PATH}/include/glib-2.0 \ GLIB_LIBS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lffi -lgmodule-2.0" \ GIO_CFLAGS=-I${PREFIX_PATH}/include GIO_LIBS="-L${PREFIX_PATH}/lib -lgio-2.0" check_result "ERROR: configure ${SRC_NAME} failure" make && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - } function compile_gst_plugins_base() { SRC_NAME=gst-plugins-base-1.14.0 PACK_SUFIX=tar.xz if [ -f ${PREFIX_PATH}/lib/libgstaudio-1.0.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; fi if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " #wget https://gstreamer.freedesktop.org/src/gst-plugins-base/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" fi msg_banner "Start decompress $SRC_NAME.${PACK_SUFIX} " if [ ! -d ${SRC_NAME} ] ; then tar -xJf ${SRC_NAME}.${PACK_SUFIX} fi cd ${SRC_NAME} msg_banner "Start cross compile $SRC_NAME " export PKG_CONFIG_PATH=${PREFIX_PATH}/lib/pkgconfig/ ./configure --prefix=${PREFIX_PATH}/ ${CONFIG_CROSS} --disable-examples --disable-valgrind \ --disable-orc --disable-opengl --disable-gles2 --disable-egl --disable-wgl --disable-glx \ --disable-cocoa --disable-x11 --disable-wayland --disable-x --disable-xvideo --disable-gl \ GLIB_CFLAGS=-I${PREFIX_PATH}/include/glib-2.0 \ GLIB_LIBS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" \ GIO_CFLAGS=-I${PREFIX_PATH}/include GIO_LIBS="-L${PREFIX_PATH}/lib -lgio-2.0" \ GST_CFLAGS=-I${PREFIX_PATH}/include/gstreamer-1.0/ GST_LIBS=-L${PREFIX_PATH}/lib/gstreamer-1.0/ \ LDFLAGS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" check_result "ERROR: configure ${SRC_NAME} failure" make && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - } function compile_gst_plugins_bad() { SRC_NAME=gst-plugins-bad-1.14.0 PACK_SUFIX=tar.xz if [ -f ${PREFIX_PATH}/lib/gstreamer-1.0/libgstcamerabin.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; fi if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " #wget https://gstreamer.freedesktop.org/src/gst-plugins-bad/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" fi msg_banner "Start decompress $SRC_NAME.${PACK_SUFIX} " if [ ! -d ${SRC_NAME} ] ; then tar -xJf ${SRC_NAME}.${PACK_SUFIX} fi cd ${SRC_NAME} msg_banner "Start cross compile $SRC_NAME " export PKG_CONFIG_PATH=${PREFIX_PATH}/lib/pkgconfig/ ./configure --prefix=${PREFIX_PATH}/ ${CONFIG_CROSS} --disable-examples --disable-valgrind \ --disable-orc --disable-wayland --disable-gl --enable-camerabin2 --disable-opencv --disable-zbar \ --disable-librfb --disable-curl --disable-dash --disable-smoothstreaming --disable-rtmp \ --disable-hls \ GLIB_CFLAGS="-I${PREFIX_PATH}/include/glib-2.0" \ GLIB_LIBS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" \ GIO_CFLAGS=-I${PREFIX_PATH}/include GIO_LIBS="-L${PREFIX_PATH}/lib -lgio-2.0" \ GST_CFLAGS=-I${PREFIX_PATH}/include/gstreamer-1.0/ GST_LIBS=-L${PREFIX_PATH}/lib/gstreamer-1.0/ \ CFLAGS="-I${PREFIX_PATH}/include/glib-2.0" \ LDFLAGS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" check_result "ERROR: configure ${SRC_NAME} failure" make -v && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - } function compile_gst_plugins_good() { SRC_NAME=gst-plugins-good-1.14.0 PACK_SUFIX=tar.xz if [ -f ${PREFIX_PATH}/lib/gstreamer-1.0/libgstmultifile.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; fi if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " #wget https://gstreamer.freedesktop.org/src/gst-plugins-good/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" fi msg_banner "Start decompress $SRC_NAME.${PACK_SUFIX} " if [ ! -d ${SRC_NAME} ] ; then tar -xJf ${SRC_NAME}.${PACK_SUFIX} fi cd ${SRC_NAME} msg_banner "Start cross compile $SRC_NAME " export PKG_CONFIG_PATH=${PREFIX_PATH}/lib/pkgconfig/ ./configure --prefix=${PREFIX_PATH}/ ${CONFIG_CROSS} --disable-examples --disable-valgrind \ --disable-orc --disable-x --disable-libcaca --disable-libpng --disable-pulse \ GLIB_CFLAGS="-I${PREFIX_PATH}/include/glib-2.0" \ GLIB_LIBS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" \ GIO_CFLAGS=-I${PREFIX_PATH}/include GIO_LIBS="-L${PREFIX_PATH}/lib -lgio-2.0" \ GST_CFLAGS=-I${PREFIX_PATH}/include/gstreamer-1.0/ GST_LIBS=-L${PREFIX_PATH}/lib/gstreamer-1.0/ \ CFLAGS="-I${PREFIX_PATH}/include/glib-2.0" \ LDFLAGS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" check_result "ERROR: configure ${SRC_NAME} failure" make -v && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - } if [ ! -f ${PREFIX_PATH}/lib/libglib-2.0.so ] ; then cd ../glib ./build.sh cd - fi export_cross compile_gstreamer compile_gst_plugins_base compile_gst_plugins_bad compile_gst_plugins_good