You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL8.4编译Rust版GStreamer插件提示pkg-config未找到libdw如何解决

问题描述

我正尝试构建一个基于Rust开发的GStreamer插件,编译过程中遇到如下报错:

The following warnings were emitted during compilation:

warning: `"pkg-config" "--libs" "--cflags" "gstreamer-1.0" "gstreamer-1.0 >= 1.14"` did not exit successfully: exit status: 1

error: failed to run custom build command for `gstreamer-sys v0.17.0 (https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#d203745c)`

Caused by:
  process didn't exit successfully: `/home/saeed/clean/media-plugins/target/release/build/gstreamer-sys-ce7fd93e56356a79/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=GSTREAMER_1.0_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=GSTREAMER_1.0_STATIC
  cargo:rerun-if-env-changed=GSTREAMER_1.0_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
  cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:warning=`"pkg-config" "--libs" "--cflags" "gstreamer-1.0" "gstreamer-1.0 >= 1.14"` did not exit successfully: exit status: 1
  --- stdout


  --- stderr
  Package libdw was not found in the pkg-config search path.
  Perhaps you should add the directory containing `libdw.pc'
  to the PKG_CONFIG_PATH environment variable
  Package 'libdw', required by 'gstreamer-1.0', not found
  Package 'libdw', required by 'gstreamer-1.0', not found

warning: build failed, waiting for other jobs to finish...
error: build failed

报错最后几行提示需要安装libdw,但我在Red Hat Enterprise Linux release 8.4系统中找不到名为libdw的对应软件包,请问该如何解决该编译问题?

解决方案

问题原因

RHEL 8.4系统中没有直接名为libdw的软件包,编译依赖所需的libdw.pc配置文件属于elfutils-devel包,且该包默认存放的CodeReady Linux Builder(CRB)仓库处于关闭状态,导致pkg-config无法找到对应依赖。

操作步骤

  • 启用CRB仓库
    执行以下命令开启RHEL 8对应的CRB仓库:
    sudo subscription-manager repos --enable codeready-builder-for-rhel-8-x86_64-rpms
    
  • 安装所需依赖包
    安装elfutils开发包以及GStreamer基础开发依赖:
    sudo dnf install elfutils-devel gstreamer1-devel gstreamer1-plugins-base-devel
    
  • 验证依赖有效性
    执行以下命令确认pkg-config可以正常识别libdw:
    pkg-config --modversion libdw
    
    命令正常输出版本号即表示依赖配置完成,重新执行Rust项目编译命令即可正常构建。

内容的提问来源于stack exchange,提问作者s4eed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:15:01