arm-linux交叉编译Gstreamer

准备工作,下载链接库

编译Gstreamer需要依赖其他的链接库,比如:zlib,libffi,libxml,orc,x264,glib,gettext,openssl
贴一个包含了很多链接库的地址,进入之后搜索这些库下载下来即可: 传送门

下载Gstreamer Gstreamer下载路径链接

新建一个文件夹存放在这些包,如 gst-build
另建一个文件夹存放编译后的头文件和库,如prefix

相关链接库的版本最好下载图中的对应版本

因为高版本的链接库开始用meson来构建和编译,我还是习惯于用configure命令来配置

在这里插入图片描述
解压之后就可以开始一个一个编译了

我的交叉编译工具是Xilinx petalinx带的 arm-linux-gnueabihf-gcc

编译zlib

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

编译libffi

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

编译gettext

cd gettext-0.21

./configure --prefix=/home/hammer/gst-build/prefix/ --enable-shared --host=arm-linux-gnueabihf

make -j16
make install

编译glib

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

编译orc

cd orc-0.4.28/

./configure --prefix=/home/hammer/gst-build/prefix/ --host=arm-linux-gnueabihf

make -j16
make install

编译x264

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

编译libxml

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

编译openssl

cd openssl-1.1.1h

./config no-asm shared --prefix=/home/hammer/gst-build/prefix CROSS_COMPILE=arm-linux-gnueabihf-

生成 Makefile 后找到并删除其中的 -m64 ,如图

在这里插入图片描述
最后执行 make -j16make install 就完成了

以上几个库编译完的目录大概是这样的,然后就可以准备编译Gstreamer了

在这里插入图片描述

交叉编译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板子上

我可以!相信你们也可以!有需要的可以跟着做试试,成功的话不妨点个小小的赞

参考博客

Gstreamer的交叉编译

Qt5.9.7交叉编译gstreamer

  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
以下是在 Ubuntu 18.04 操作系统下,使用 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 交叉编译 Qt 5.6.2 的流程: 1. 下载 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 工具链,并解压到某个目录下。 2. 安装 Qt 5.6.2 的依赖库: ``` sudo apt-get update sudo apt-get install build-essential perl python git sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libx11-xcb-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxslt1-dev libgl1-mesa-dev libglu1-mesa-dev libsqlite3-dev libmysqlclient-dev libpq-dev libiodbc2-dev libasound2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxrandr-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-ugly1.0-dev gstreamer1.0-libav gstreamer1.0-alsa gstreamer1.0-pulseaudio libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-ugly1.0-dev ``` 3. 下载 Qt 5.6.2 的源代码,并解压到某个目录下。 4. 进入 Qt 5.6.2 的源代码目录,执行以下命令: ``` ./configure -release -opengl es2 -device linux-rasp-pi2-g++ -device-option CROSS_COMPILE=/path/to/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf- -sysroot /path/to/sysroot -opensource -confirm-license -make libs -prefix /usr/local/qt5arm -no-xcb -no-pch -no-icu -no-gif -no-libjpeg -no-libpng -no-harfbuzz -no-openssl -no-qml-debug -nomake examples -nomake tests ``` 其中,/path/to/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 是 gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf 工具链的路径,/path/to/sysroot 是交叉编译环境的根文件系统路径。 5. 执行 make 命令进行编译: ``` make -j4 ``` 其中,-j4 表示使用 4 个线程进行编译。 6. 执行 make install 命令进行安装: ``` sudo make install ``` 7. 完成后,在 /usr/local/qt5arm 目录下会生成 Qt 5.6.2 的安装文件。把该目录添加到交叉编译环境的 PATH 环境变量中即可使用。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值