Ubuntu16.04下调试gstreamer+rkisp(一)

本文档介绍了在Ubuntu16.04系统下,如何搭建gstreamer环境,安装并使用Gstreamer的rkisp插件。通过参考Linux-Rockchip的GitHub资源,逐步进行编译和安装过程,包括gst-plugins-rockchip、gstreamer-camera、gstreamer-rockchip-extra和gstreamer-rockchip等项目的编译。在编译过程中可能会遇到GLib版本问题,将在后续内容中解决。

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

在上一个关于luvcview任务中发现许多isp功能未实现,考虑用gstreamer再找到独立rkisp插件进行编写.目前由于相关资料较少,可能没有直接的rkisp插件,好在能在githup上找到Linux-Rockchip相关文件.
https://github.com/rockchip-linux

根据 <RK_Linux_Camera_Gstreamer 应用开发>

1.搭建gstreamer环境

略.

2.安装使用Gstreamer的插件

安装使用 Gstreamer rkisp element:
首先解压缩基于 Gstreamer 的 rkisp 插件,并根据不同环境进行编译安装。
Firefly 开发板上,请运行以下命令:

$ ./autogen.sh --prefix=/usr/local --enable-gst --enable-rkiq
$make
$ make install

在没有编译环境的开发板上,请先在 PC 端运行以下命令进行交叉编译后,再将编译生成的库安装
到开发板上,这里以 excavator 开发板为例:

$ export PATH=/path/to/cross-compiler:$PATH
$ CC=aarch64-linux-gcc ./autogen.sh --prefix=./out --host=aarch64-linux
--enable-gst --enable-rkiq
$ make
$ make install

目前准备在下述几个包中进行编译,怀着试一试的态度考察是否可行:
把它们就当成rkisp试试…
在这里插入图片描述若需需安装交叉编译工具,rk3399如下:

$ sudo apt-get install gcc-arm-linux-gnueabihf \
gcc-aarch64-linux-gnu device-tree-compiler lzop libncurses5-dev \
libssl1.0.0 libssl-dev

检测交叉编译工具:

$aarch64-linux-gnu-gcc -v

编译过程与结果

gst-plugins-rockchip-master

在这里插入图片描述

fatal: Not a git repository (or any of the parent directories): .git
Failed to create commit hook symlink, copying instead ...
cp: 无法获取'common/hooks/pre-commit.hook' 的文件状态(stat): 没有那个文件或目录
+ passing argument --prefix=./out to configure
+ passing argument --host=aarch64-linux to configure
+ passing argument --enable-gst to configure
+ passing argument --enable-rkiq to configure
+ options passed to configure:  --prefix=./out --host=aarch64-linux --enable-gst --enable-rkiq
+ check for build tools
  checking for autoreconf ... 
/usr/bin/autoreconf
  checking for pkg-config ... 
/usr/bin/pkg-config
+ running autopoint --force...
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Remember to add 'LT_INIT' to configure.ac.
libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
libtoolize: and rerunning libtoolize and aclocal.
configure.ac:66: warning: The 'AM_PROG_MKDIR_P' macro is deprecated, and its use is discouraged.
configure.ac:66: You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
configure.ac:66: and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.
configure.ac:46: installing './compile'
configure.ac:10: installing './config.guess'
configure.ac:10: installing './config.sub'
configure.ac:13: installing './install-sh'
configure.ac:13: installing './missing'
Makefile.am: installing './INSTALL'
Makefile.am:1: warning: AM_GNU_GETTEXT used but 'po' not in SUBDIRS
gst/rkv4l2/Makefile.am: installing './depcomp'
+ running configure ... 
  default flags:  --enable-maintainer-mode --enable-gtk-doc
  external flags:  --prefix=./out --host=aarch64-linux --enable-gst --enable-rkiq

./configure --enable-maintainer-mode --enable-gtk-doc --prefix=./out --host=aarch64-linux --enable-gst --enable-rkiq
configure: WARNING: unrecognized options: --enable-gtk-doc, --enable-gst, --enable-rkiq
configure: error: expected an absolute directory name for --prefix: ./out
  configure failed

补全路径

root@lowfree02:/home/lowfree/doc/rockchip-linux/gst-plugins-rockchip-master# CC=aarch64-linux-gcc ./autogen.sh --prefix=/home/lowfree/doc/rockchip-linux/gst-plugins-rockchip-master/out --host=aarch64-linux --enable-gst --enable-rkiq
fatal: Not a git repository (or any of the parent directories): .git
Failed to create commit hook symlink, copying instead ...
cp: 无法获取'common/hooks/pre-commit.hook' 的文件状态(stat): 没有那个文件或目录
+ passing argument --prefix=/home/lowfree/doc/rockchip-linux/gst-plugins-rockchip-master/out to configure
+ passing argument --host=aarch64-linux to configure
+ passing argument --enable-gst to configure
+ passing argument --enable-rkiq to configure
+ options passed to configure:  --prefix=/home/lowfree/doc/rockchip-linux/gst-plugins-rockchip-master/out --host=aarch64-linux --enable-gst --enable-rkiq
+ check for build tools
  checking for autoreconf ... 
/usr/bin/autoreconf
  checking for pkg-config ... 
/usr/bin/pkg-config
+ running autopoint --force...
libtoolize: putting auxiliary files in '.'.
libtoolize: copying file './ltmain.sh'
libtoolize: putting macros in 'm4'.
libtoolize: copying file 'm4/libtool.m4'
libtoolize: copying file 'm4/ltoptions.m4'
libtoolize: copying file 'm4/ltsugar.m4'
libtoolize: copying file 'm4/ltversion.m4'
libtoolize: copying file 'm4/lt~obsolete.m4'
libtoolize: Remember to add 'LT_INIT' to configure.ac.
libtoolize: Consider adding 'AC_CONFIG_MACRO_DIRS([m4])' to configure.ac,
libtoolize: and rerunning libtoolize and aclocal.
configure.ac:66: warning: The 'AM_PROG_MKDIR_P' macro is deprecated, and its use is discouraged.
configure.ac:66: You should use the Autoconf-provided 'AC_PROG_MKDIR_P' macro instead,
configure.ac:66: and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.
configure.ac:46: installing './compile'
configure.ac:13: installing './missing'
Makefile.am:1: warning: AM_GNU_GETTEXT used but 'po' not in SUBDIRS
gst/rkv4l2/Makefile.am: installing './depcomp'
+ running configure ... 
  default flags:  --enable-maintainer-mode
<think>好的,我现在需要帮助用户在Ubuntu 16.04上安装Clang++ 14。首先,用户提供的引用资料里提到了些关于安装Clang不同版本的信息,但都是关于较旧版本的,比如3.6或者通过apt安装的默认版本。而用户需要的是Clang++ 14,这是个比较新的版本,而Ubuntu 16.04的官方仓库可能没有直接支持。 首先,我应该考虑Ubuntu 16.04的软件源是否包含Clang 14。根据经验,Ubuntu的官方仓库通常不会提供太新的软件版本,尤其是对于已经停止支持的发行版。Ubuntu 16.04在2021年4月已经结束了标准支持,所以很可能需要第三方源或者手动安装。 接下来,查看用户提供的引用内容,引用[2]和[3]提到在Ubuntu 16.04下通过apt安装clang-format和clang,但版本可能较低。比如引用[3]中安装的是clang和clangd,但没有说明具体版本,可能默认是系统仓库里的旧版。因此,我需要寻找其他方法。 种常见的方法是使用LLVM的官方APT仓库。LLVM提供了不同版本的预编译包,可能支持旧版Ubuntu。用户需要添加LLVM的APT源,然后安装Clang 14。但需要确认该仓库是否支持Ubuntu 16.04(代号Xenial)。可能需要检查LLVM官网的说明。 另外,如果官方仓库不支持,可能需要手动下载Clang 14的二进制文件或者从源码编译。但编译源码对用户来说可能比较复杂,特别是如果用户不熟悉构建过程的话。所以优先考虑添加第三方源。 现在,我应该指导用户添加LLVM的APT仓库。通常步骤是: 1. 下载并安装LLVM的GPG密钥。 2. 添加仓库地址到sources.list。 3. 更新软件包列表。 4. 安装clang-14。 但需要确认该仓库是否支持Xenial。例如,LLVM的APT仓库可能只支持较新的Ubuntu版本。如果不行,可能需要使用其他方法,比如使用Ubuntu Toolchain PPA,或者通过snap安装。 另外,用户可能需要安装libstdc++或libc++,如引用[4]所述,但Clang 14可能需要更高版本的库,可能需要处理依赖关系。 可能的步骤: 1. 添加LLVM的APT仓库,如果支持Xenial的话。 2. 安装Clang 14及相关工具。 3. 处理可能的依赖问题,比如libstdc++的版本。 但需要验证Xenial是否在LLVM的APT支持列表中。例如,访问https://apt.llvm.org/查看支持的发行版。假设Xenial不在其中,那么可能需要手动安装。 另种方法是使用预编译的二进制文件。从releases.llvm.org下载Clang 14的二进制包,解压并添加到PATH中。这可能需要用户手动设置环境变量,或者使用符号链接。 例如: wget https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz 解压后,将bin目录加入PATH。 但需要注意,该二进制是否适用于Ubuntu 16.04,可能依赖的库版本是否满足。如果二进制是针对Ubuntu 18.04构建的,可能在16.04上运行时出现glibc版本不兼容的问题。例如,Ubuntu 16.04的glibc版本是2.23,而18.04的是2.27,如果Clang 14需要更高版本的glibc,则无法运行。 这时可能需要考虑从源码编译Clang 14,但编译过程较为复杂,特别是对于不熟悉的用户来说可能有困难。 还有种可能,使用第三方PPA,比如Ubuntu Toolchain的测试仓库,但需要检查是否有Clang 14的PPA支持Xenial。 总结可能的步骤: - 尝试通过LLVM的APT仓库安装,如果支持。 - 如果不行,尝试下载预编译的二进制文件,检查依赖。 - 若依赖不满足,考虑源码编译或使用其他方法。 现在,我需要根据这些可能性,给出用户个可行的步骤。假设用户无法通过APT安装,那么手动下载预编译的二进制可能是更简单的方式,但需要处理依赖问题。或者建议用户升级到更高版本的Ubuntu以获得更好的支持。 在用户提供的引用中,引用[1]提到在Ubuntu上安装clang++3.6时遇到问题,但用户需要的是14版本,所以可能需要不同的方法。引用[4]提到libc++和libstdc++的区别,可能需要安装对应的库。 因此,步骤可能包括: 1. 添加LLVM的APT仓库: wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - sudo add-apt-repository 'deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-14 main' sudo apt update sudo apt install clang-14 但需要确认该仓库是否存在xenial的版本。例如,访问https://apt.llvm.org/,查看是否有针对Xenial的14版本。假设存在的话,可以继续。 如果不存在,可能需要修改为其他代号,比如用bionic(18.04)的仓库,但可能不兼容。 比如,尝试使用: deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial main deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-14 main 但不确定是否存在该仓库。如果不存在,则这种方法不可行。 如果无法通过APT安装,则考虑手动下载二进制包: 从https://releases.llvm.org/download.html#14.0.0下载适用于Ubuntu的预编译版本,例如选择Clang 14.0.0的Pre-Built Binaries: x86_64-linux-gnu-ubuntu-18.04,解压后设置环境变量。 但需要检查glibc的版本: 在Ubuntu 16.04终端运行: ldd --version 如果输出显示glibc 2.23,而预编译的二进制可能需要更高版本,则无法运行。例如,Ubuntu 18.04的glibc是2.27,所以Clang 14的二进制可能需要glibc >=2.27,导致无法在16.04上运行。 这时可能需要从源码编译Clang,或者使用Docker容器等其他方法。 如果用户坚持在Ubuntu 16.04上安装,可能需要编译Clang 14的源码。步骤如下: 安装依赖: sudo apt update sudo apt install build-essential cmake ninja-build git 下载源码: git clone https://github.com/llvm/llvm-project.git cd llvm-project git checkout release/14.x 编译: mkdir build cd build cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm make -j$(nproc) sudo make install 这个过程可能需要较长时间,且可能出现依赖问题,需要处理。 因此,综合来看,可能的解决方案包括: 1. 添加LLVM官方APT仓库,如果支持Xenial。 2. 使用预编译的二进制(可能不兼容)。 3. 从源码编译。 4. 建议升级Ubuntu版本或使用Docker。 现在需要根据用户的情况给出建议。如果用户无法升级系统,可能需要源码编译。如果用户愿意使用其他方法,可能更简单。 最终,回答应分步骤指导用户如何安装,可能包括APT方法(如果可行),或手动安装方法,并指出可能的依赖问题。</think>要在Ubuntu 16.04上安装Clang++ 14,由于该版本已结束官方支持且软件仓库未提供Clang 14,需通过以下步骤手动安装: --- ### **方法1:使用LLVM官方APT仓库(若支持)** 1. **添加LLVM仓库密钥** 执行以下命令添加GPG密钥: ```bash wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - ``` 2. **添加仓库地址** 创建新的源文件(需确认仓库是否支持`xenial`): ```bash sudo nano /etc/apt/sources.list.d/llvm.list ``` 添加以下内容(若仓库支持): ```plaintext deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-14 main ``` 3. **更新并安装** ```bash sudo apt update sudo apt install clang-14 ``` 若仓库不可用,需改用其他方法。 --- ### **方法2:手动安装预编译二进制** 1. **下载二进制包** 从[LLVM官网](https://releases.llvm.org/download.html#14.0.0)下载适用于Linux的Clang 14预编译包(如`clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz`): ```bash wget https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.0/clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz ``` 2. **解压并配置环境** ```bash tar xvf clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04.tar.xz sudo mv clang+llvm-14.0.0-x86_64-linux-gnu-ubuntu-18.04 /opt/clang14 echo 'export PATH="/opt/clang14/bin:$PATH"' >> ~/.bashrc source ~/.bashrc ``` **注意**:若系统依赖库版本过低(如glibc < 2.27),可能无法运行[^4]。 --- ### **方法3:从源码编译(兼容性最佳)** 1. **安装编译依赖** ```bash sudo apt install build-essential cmake ninja-build git ``` 2. **下载源码并编译** ```bash git clone https://github.com/llvm/llvm-project.git cd llvm-project git checkout release/14.x mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm make -j$(nproc) sudo make install ``` 此过程耗时较长(约1-2小时),需确保磁盘空间充足。 --- ### **验证安装** 执行以下命令检查版本: ```bash clang++ --version ``` 若输出包含`Clang 14.0.0`,则安装成功。 --- ### **依赖问题处理** - **libstdc++版本过低**:升级GCC或手动安装高版本库。 - **glibc兼容性问题**:若预编译包无法运行,需升级系统或改用源码编译。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值