交叉编译之Gstreamer-1.22.0

编译环境:ubuntu-22.04 编译工具 :meson,autoconf,ninja

一、编译工具

1.添加交叉编译工具链

vi ~/.bashrc
export PATH=/home/ubuntu/RK3588/aarch64-rockchip1031-linux-gnu/bin:$PATH

source ~/.bashrc

2.autoconf,libtool,texinfo(缺少makeinfo)

sudo apt update
sudo apt install libtool
sudo apt install autoconf
sudo apt install texinfo

3.meson-1.4.0

meson-1.4.0下载地址

python3 setup.py build 
sudo python3 setup.py install

报错缺少setuptools

sudo apt install python3-setuptools

4.ninja

使用清华源下载快捷

sudo python3 -m pip install ninja --index-url https://pypi.tuna.tsinghua.edu.cn/simple

二、编译

        理论上来说,使用meson交叉编译的时候,会自动下载所需要的依赖库,而不需要对某些库进行编译。但实际情况下,下载依赖库的时候可能需要科学上网进行,以及会报错缺失某些库的头文件等情况。meson构建的gstreamer包含了base、good、bad等插件。

1.直接编译gstreamer-1.22.0

1)下载gstreamer-1.22.0

tar -xvf gstreamer-1.22.0.tar.gz
cd gstreamer-1.22.0

2)编写meson所需构建aarch64.txt文件

   [paths]                                                                     
   prefix='/home/ubuntu/RK3588/usr'
   
   [binaries]
   c='aarch64-rockchip1031-linux-gnu-gcc'
   cpp='aarch64-rockchip1031-linux-gnu-g++'
   ar='aarch64-rockchip1031-linux-gnu-ar'
   strip='aarch64-rockchip1031-linux-gnu-strip'
   pkgconfig='/usr/bin/pkg-config'
  
  [host_machine]
  system='linux'
  cpu_family='aarch64'
  cpu='aarch64'
  endian='little'
3)编译
meson --cross-file aarch64.txt -Dgtk_doc=disabled -Dtests=disabled -Dexamples=disabled build

cd build

ninja && ninja install

2.从依赖库编译开始

        如果直接使用meson进行构建失败,例如可能会报错找不到zlib.h头文件等,可预先编译几个依赖库(暂时只找到这个解决办法)。博主只编译了zlib和expat两个库就编译成功,其余库可看情况自行选择,一般来说主要先编译libffi,zlib,glib,expat即可正常完成。

1).编译libffi-3.4.2

下载libffi-3.4.2

tar -xvf libffi-3.4.2.tar.gz
cd libffi-3.4.2/
./autogen.sh

CC=aarch64-rockchip1031-linux-gnu-gcc ./configure \
--prefix=/home/ubuntu/RK3588/usr \
--host=aarch64-rockchip1031-linux-gnu --enable-shared

make -j16
make install

2).编译zlib-1.2.11

下载zlib-1.2.11

tar -xvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/

CC=aarch64-rockchip1031-linux-gnu-gcc ./configure \
--prefix=/home/ubuntu/RK3588/usr --enable-shared

make -j16 
make install

3).编译glib-2.74.1

下载glib

(1)解压文件
tar -xvf glib-2.74.1.tar.gz
cd glib-2.74.1/

(2).编写meson所需构建文件aarch64.txt
   [paths]                                                                     
   prefix='/home/ubuntu/RK3588/usr'
   
   [binaries]
   c='aarch64-rockchip1031-linux-gnu-gcc'
   cpp='aarch64-rockchip1031-linux-gnu-g++'
   ar='aarch64-rockchip1031-linux-gnu-ar'
   strip='aarch64-rockchip1031-linux-gnu-strip'
   pkgconfig='/usr/bin/pkg-config'
  
  [host_machine]
  system='linux'
  cpu_family='aarch64'
  cpu='aarch64'
  endian='little'
(3).配置glib依赖库环境,glib依赖libffi、zlib
export PKG_CONFIG_LIBDIR=/home/ubuntu/RK3588/usr/lib/pkgconfig
(4)构建
meson --cross-file aarch64.txt \
 -Dselinux=false -Dinstalled_tests=false -Ddtrace=false\
 -Dsystemtap=false -Dselinux=disabled -Dlibmount=disabled\
  build

cd build
ninja && ninja install

4).编译expat-2.4.7

(1)下载expat-2.4.7

tar -xvf expat-2.4.7.tar.gz
cd expat-2.4.7/
(2)编译
./configure --prefix=/home/ubuntu/RK3588/usr \
 --host=aarch64-rockchip1031-linux-gnu \
CC=aarch64-rockchip1031-linux-gnu-gcc \
CXX=aarch64-rockchip1031-linux-gnu-g++ 

make -j16
make install

5).编译gstreamer-1.22.0

(1).下载解压
tar -xvf gstreamer-1.22.0.tar.gz

cd gstreamer-1.22.0
(2).使用上面构建的aarch64.txt文件,配置依赖包环境
export PKG_CONFIG_PATH=/home/ubuntu/RK3588/usr/lib/pkgconfig
(3).构建
meson --cross-file aarch64.txt -Dgtk_doc=disabled -Dtests=disabled -Dexamples=disabled build

cd build 
ninja && ninja install

三、报错

1.报错ERROR: Program 'flex win_flex' not found or not executable,没有安装flex

sudo apt install flex

2.报错:subprojects/gstreamer/gst/parse/meson.build:34:8: ERROR: Program 'bison win_bison' not found or not executable,没有安装bison

sudo apt install bison

3.报错:libffi.so.8, needed by /home/ubuntu/RK3588/usr/lib/libgobject-2.0.so, not found (try using -rpath or -rpath-link)

        libffi的库保存在lib64目录下而不是lib目录下,libgobject-2.0依赖libffi库,将lib64/下的libffi库复制到lib/下即可

cp * ../lib

4.报错缺少头文件,zlib.h或expat.h等

        暂时的解决办法是预先编译这两个库,然后再构建gstreamer;或许可以修改meson.build文件,指定这两个库的路径,但是暂时尚未熟悉meson构建方式。

  • 26
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值