交叉编译gstreamer for arm

本文详细记录了在Linux环境下,如何进行gstreamer的交叉编译过程,包括下载依赖库,设置编译器路径,解决编译过程中遇到的bison、flex等问题,以及解决链接库错误的复杂步骤。最终成功完成gstreamer的交叉编译安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下载glib,libxml2,gstreamer到目录/home/mars/Downloads/
2.mkdir /home/mars/arm-linux/usr
3.解压缩glib:tar zxvf glib-2.22.0.tar.gz
4.cd glib-2.22.0
5.输入:
CC=arm-linux-gcc ./configure --build=i686-linux --host=arm-linux --prefix=/usr

glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes

ac_cv_func_posix_getgrgid_r=yes ac_cv_lib_rt_clock_gettime=no glib_cv_monotonic_clock=yes

解释:用编译器:arm-linux-gcc ,--host:运行环境是arm-linux,--prefix:运行目录是/usr。
后面很多要yes or no的都是必须的,因为arm和pc毕竟不同,所以很多配置要重新配置。
6.顺利成功
7.make
8.恶 编了好久啊 真怀疑在无限循环中。。。尤其这会同时在循环听一首歌 有一种时空混乱,时间重复的

感觉
9.呵呵,太好了,成功。
10.make DESTDIR=/home/mars/arm-linux/usr install
11.成功。

12.解压缩libxml2
13.cd libxml2-2.7.6
14.CC=arm-linux-gcc ./configure --build=i686-linux --host=arm-linux --prefix=/usr
15.成功。5分钟。最后显示了一个:
/bin/rm: cannot remove 'libtoolT': No such file or directory
Done configuring
但是没看到error字样,应该成功了吧。
16.make
17.成功。13分钟 真有得等的
18.make DESTDIR=/home/mars/arm-linux/usr install
19。成功

20.解压缩gstreamer,并进入文件夹cd gstreamer-0.10.29
21.
CC=arm-linux-gcc  PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure --build=i686-linux --

host=arm-linux --prefix=/usr CFLAGS=-I/usr/include --disable-registry --disable-loadsave --

disable-gtk-doc ac_cv_func_register_printf_function=no --disable-tests --disable-valgrind --

disable-debug --disable-gst-debug
22.失败configure: error: Could not find bison
23.下载bison-2.4.2,
tar z

配置交叉编译 GStreamer 需要根据目标平台的架构和操作系统进行适当的设置。以下是一个通用的流程,适用于大多数嵌入式 Linux 平台。 ### 准备工作 1. **安装依赖项** 在主机系统上安装必要的构建工具和依赖库: ```bash sudo apt-get install build-essential libtool autoconf automake flex bison libglib2.0-dev ``` 2. **获取 GStreamer 源码** 使用 Git 克隆官方仓库: ```bash git clone https://gitlab.freedesktop.org/gstreamer/gstreamer.git cd gstreamer ``` ### 配置交叉编译环境 1. **创建构建目录** 推荐使用单独的构建目录以避免污染源码树: ```bash mkdir build && cd build ``` 2. **准备交叉编译工具链** 确保你已经安装了适用于目标平台的交叉编译工具链。例如,对于 ARM 架构,你可能需要 `arm-linux-gnueabi-gcc` 或 `arm-linux-gnueabihf-gcc`。 3. **使用 `meson` 配置交叉编译** GStreamer 使用 Meson 构建系统,可以通过交叉编译配置文件指定目标平台的信息。创建一个交叉编译配置文件 `cross-file.txt`,内容如下(以 ARM 架构为例): ```ini [host_machine] system = 'linux' cpu_family = 'arm' cpu = 'armv7' endian = 'little' [binaries] c = 'arm-linux-gnueabihf-gcc' cpp = 'arm-linux-gnueabihf-g++' ar = 'arm-linux-gnueabihf-ar' strip = 'arm-linux-gnueabihf-strip' pkgconfig = 'arm-linux-gnueabihf-pkg-config' [properties] needs_exe_wrapper = true ``` 4. **运行 `meson` 配置命令** 使用 `meson` 命令配置交叉编译环境: ```bash meson .. --cross-file cross-file.txt --prefix=/usr/local/arm-gst ``` 5. **构建与安装** 使用 `ninja` 构建并安装: ```bash ninja ninja install ``` ### 验证交叉编译结果 1. **检查生成的二进制文件** 确保生成的可执行文件是为目标平台编译的: ```bash file /usr/local/arm-gst/bin/gst-launch-1.0 ``` 输出应显示目标架构,例如: ``` /usr/local/arm-gst/bin/gst-launch-1.0: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, not stripped ``` 2. **部署到目标设备** 将编译好的 GStreamer 安装目录通过 `scp` 或其他方式复制到目标设备,并确保目标设备上的运行环境支持所需的库文件。 ### 可选:使用 `gst-build` 工具简化流程 GStreamer 官方提供了一个名为 `gst-build` 的工具,可以简化整个构建过程,尤其是对于交叉编译场景。你可以克隆 `gst-build` 仓库并使用其提供的交叉编译支持: ```bash git clone https://gitlab.freedesktop.org/gstreamer/gst-build.git cd gst-build meson _build --cross-file ../cross-file.txt ninja -C _build ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值