Ubuntu 18.04升级Gstreamer后如何全局切换新版本路径?
解决Gstreamer手动编译后全局生效的问题
一、重新编译并完成安装
你之前仅执行了编译步骤,未将编译产物安装到系统路径,且建议指定独立安装目录避免与Jetpack自带版本冲突:
- 进入之前的build目录清理旧构建文件:
cd gstreamer/build ninja clean rm -rf *
- 用meson指定安装路径(推荐
/opt/gstreamer-1.20,可根据你要安装的版本调整):
meson --prefix=/opt/gstreamer-1.20 --libdir=lib/aarch64-linux-gnu ..
注:Jetson为arm64架构,指定
lib/aarch64-linux-gnu能让系统正确识别库文件路径
- 编译并完成安装:
ninja sudo ninja install
二、配置全局环境变量
让系统优先加载新版本的Gstreamer二进制文件、库和配置:
- 创建全局环境配置文件:
sudo nano /etc/profile.d/gstreamer-new.sh
- 添加以下内容(对应你指定的安装路径):
export PATH=/opt/gstreamer-1.20/bin:$PATH export LD_LIBRARY_PATH=/opt/gstreamer-1.20/lib/aarch64-linux-gnu:$LD_LIBRARY_PATH export PKG_CONFIG_PATH=/opt/gstreamer-1.20/lib/aarch64-linux-gnu/pkgconfig:$PKG_CONFIG_PATH
- 保存文件后刷新环境变量:
source /etc/profile.d/gstreamer-new.sh
- 验证版本是否切换成功:
gst-launch-1.0 --version
此时应显示你安装的1.18或1.20版本。
三、让C代码编译时链接新版本
编译Gstreamer相关C代码时,需确保编译器指向新版本的头文件和库:
- 直接用gcc编译时,通过pkg-config获取参数:
gcc your_gst_app.c -o your_gst_app `pkg-config --cflags --libs gstreamer-1.0`
由于已配置PKG_CONFIG_PATH,pkg-config会自动调用新版本的配置信息。
- 用CMake构建时,在
CMakeLists.txt中添加:
find_package(PkgConfig REQUIRED) pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0) include_directories(${GSTREAMER_INCLUDE_DIRS}) link_directories(${GSTREAMER_LIBRARY_DIRS}) add_executable(your_gst_app your_gst_app.c) target_link_libraries(your_gst_app ${GSTREAMER_LIBRARIES})
四、注意事项
- 不要删除Jetpack自带的Gstreamer,系统依赖该版本运行基础组件,我们仅通过环境变量让系统优先使用新版本
- 若需临时切换回旧版本,只需注释
/etc/profile.d/gstreamer-new.sh中的内容,再执行source /etc/profile.d/gstreamer-new.sh即可
内容的提问来源于stack exchange,提问作者koenik93
相关产品推荐
相关产品推荐

