编译Gstreamer需要依赖其他的链接库,比如:zlib,libffi,libxml,orc,x264,glib,gettext,openssl
贴一个包含了很多链接库的地址,进入之后搜索这些库下载下来即可: 传送门
下载Gstreamer Gstreamer下载路径链接
新建一个文件夹存放在这些包,如 gst-build
另建一个文件夹存放编译后的头文件和库,如prefix
相关链接库的版本最好下载图中的对应版本
因为高版本的链接库开始用meson来构建和编译,我还是习惯于用configure命令来配置
解压之后就可以开始一个一个编译了
我的交叉编译工具是Xilinx petalinx带的 arm-linux-gnueabihf-gcc
cd zlib-1.2.11/
修改Makefile,在最后添加gcc=arm-linux-gnueabihf-gcc
CC=arm-linux-gnueabihf-gcc ./configure --prefix=/home/hammer/gst-build/prefix/ --enable-shared
make -j16
make install
cd libffi-3.2.1/
CC=arm-linux-gnueabihf-gcc ./configure --prefix=/home/hammer/gst-build/prefix/ --host=arm-linux-gnueabihf
make -j16
make install
cd gettext-0.21
./configure --prefix=/home/hammer/gst-build/prefix/ --enable-shared --host=arm-linux-gnueabihf
make -j16
make install
glib的编译依赖 libffi 和 zlib,需要指定两者的头文件和库文件的位置,查看并修改对应的目录
cd glib-2.56.1/
LIBFFI_CFLAGS='-I/home/hammer/gst-build/prefix/lib/libffi-3.2.1/include' \
LIBFFI_LIBS='-lffi -L=/home/hammer/gst-build/prefix/lib' \
ZLIB_CFLAGS='-I/home/hammer/gst-build/prefix/include' \
ZLIB_LIBS='-lz -L/home/hammer/gst-build/prefix/lib' \
./configure --host=arm-linux-gnueabihf --prefix=/home/hammer/gst-build/prefix/ \
PKG_CONFIG_PATH=/home/hammer/gst-build/prefix/lib/pkgconfig/ \
glib_cv_stack_grows=no glib_cv_uscore=yes \
ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes \
--with-pcre=internal --enable-libmount=no
make -j16
make install
cd orc-0.4.28/
./configure --prefix=/home/hammer/gst-build/prefix/ --host=arm-linux-gnueabihf
make -j16
make install
cd x264-master/
./configure --prefix=/home/hammer/gst-build/prefix/ \
--enable-shared --host=arm-linux-gnueabihf --disable-asm \
--cross-prefix=arm-linux-gnueabihf-
make -j16
make install
cd libxml2-2.9.8/
./configure --prefix=/home/hammer/gst-build/prefix/ \
--enable-shared --host=arm-linux-gnueabihf \
CROSS_COMPILE=arm-linux-gnueabihf- --with-python=no \
Z_CFLAGS='-I/home/hammer/gst-build/prefix/include' \
Z_LIBS='-lz -L/home/hammer/gst-build/prefix/lib'
make -j16
make install
cd openssl-1.1.1h
./config no-asm shared --prefix=/home/hammer/gst-build/prefix CROSS_COMPILE=arm-linux-gnueabihf-
生成 Makefile 后找到并删除其中的 -m64
,如图
最后执行 make -j16
和 make install
就完成了
以上几个库编译完的目录大概是这样的,然后就可以准备编译Gstreamer了
cd gstreamer-1.14.0/
./configure --prefix=/home/hammer/gst-build/prefix/ --host=arm-linux-gnueabihf \
LDFLAGS="-Wl,--unresolved-symbols=ignore-in-shared-libs -I/home/hammer/gst-build/prefix/include" \
PKG_CONFIG_PATH=/home/hammer/gst-build/prefix/lib/pkgconfig \
GIO_LIBS="-L/home/hammer/gst-build/prefix/lib -lgio-2.0 -lgobject-2.0 -lglib-2.0" \
GLIB_LIBS="-L/home/hammer/gst-build/prefix/lib -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -lgmodule-2.0" \
--disable-loadsave --disable-gtk-doc --disable-valgrind \
ac_cv_func_register_printf_function=no
make -j16
make install
最后编译成功了,生产动态链接库在 prefix/lib
目录下,可以用 file
命令查看一下格式
file libgstreamer-1.0.so.0.1400.0
出现截图所示信息,说明可以运行在ARM板子上
我可以!相信你们也可以!有需要的可以跟着做试试,成功的话不妨点个小小的赞