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:
命令正常输出版本号即表示依赖配置完成,重新执行Rust项目编译命令即可正常构建。pkg-config --modversion libdw
内容的提问来源于stack exchange,提问作者s4eed
相关产品推荐
相关产品推荐

