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

升级Ubuntu 20.04到21.04后PSPP新旧版本源码均无法编译问题问询

Ubuntu 20.04升级至21.04后PSPP源码编译链接错误解决方案

错误特征

编译PSPP源码时触发如下链接错误:

/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined reference to `g_uri_split_network'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined reference to `g_uri_is_valid'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined reference to `g_memdup2'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined reference to `g_uri_join'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined reference to `g_uri_split_with_user'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined reference to `g_spawn_async_with_pipes_and_fds'
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined reference to `g_file_set_contents_full'

根因说明

上述报错中出现的未定义符号均为GLib 2.67及以上版本新增的API。Ubuntu 21.04自带的libgio-2.0库已经升级到依赖这些新API的版本,编译PSPP时触发该错误的核心原因是构建系统的依赖匹配异常:要么是系统中残留了旧版本的GLib开发文件,构建时读取了不包含新API声明的旧头文件;要么是PSPP的构建脚本未正确引入对应版本GLib核心库的链接参数。

解决步骤

  • 第一步:清理PSPP源码目录的旧编译缓存,避免旧配置残留影响
    make distclean
    # 如上述命令执行失败,可直接删除整个源码目录后重新解压源码包
    
  • 第二步:修复系统GLib依赖,确保所有GLib相关开发包版本与21.04官方源版本一致
    sudo apt update && sudo apt install --reinstall libglib2.0-dev libgio2.0-dev
    
    执行完成后可运行以下命令验证GLib版本,21.04环境下正常应返回2.68.x的版本号:
    pkg-config --modversion glib-2.0
    
  • 第三步:重新执行configure配置,强制传入正确的GLib编译链接参数,避免构建脚本检测异常
    ./configure GLIB_CFLAGS="$(pkg-config --cflags glib-2.0 gio-2.0)" GLIB_LIBS="$(pkg-config --libs glib-2.0 gio-2.0)"
    
  • 第四步:正常执行编译即可
    make -j$(nproc)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 06:24:06