华为云码道安装时codearts-agent 依赖于 libstdc++6 (>= 9)

华为云码道安装时codearts-agent 依赖于 libstdc++6 (>= 9) 方案二从源码编译 GCC 9最稳妥、最通用如果不想冒险修改系统文件源码编译是官方文档和社区都推荐的可靠方法虽然耗时但能保证 100% 成功。操作步骤安装编译所需的依赖bashsudo apt updatesudo apt install build-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev flex bison zlib1g-dev下载并解压 GCC 9.5.0 源码9.x 系列的最新版本bashwget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.xztar -xvf gcc-9.5.0.tar.xzcd gcc-9.5.0自动下载其它依赖源码bash./contrib/download_prerequisites创建独立的构建目录并配置bashcd …mkdir gcc-buildcd gcc-build…/gcc-9.5.0/configure --prefix/opt/gcc-9.5 --enable-languagesc,c --disable-multilib–prefix/opt/gcc-9.5 指定了安装路径不会覆盖系统自带的 GCC 8.3。开始编译这一步耗时会很长请耐心等待bashmake -j$(nproc)安装bashsudo make install配置新版本 GCC 的环境变量为了让 codearts-agent 和其他程序优先使用新版的 libstdc你可以将其路径加入系统库搜索路径中。bashecho ‘export LD_LIBRARY_PATH/opt/gcc-9.5/lib64:$LD_LIBRARY_PATH’ ~/.bashrcsource ~/.bashrc验证与后续完成上述任一方案后再次运行 gcc --version 应该能看到 GCC 9.x 的版本信息说明新版的 libstdc 已可用。此时你可以重新尝试安装 codearts-agentbashsudo dpkg -i codearts-agent-linux-arm64-26.4.4-42d8abe.deb将新的 bin 目录添加到 PATH 的开头echo ‘export PATH/opt/gcc-9.5/bin:$PATH’ ~/.bashrc同时确保库路径正确注意是 lib64 还是 libecho ‘export LD_LIBRARY_PATH/opt/gcc-9.5/lib64:$LD_LIBRARY_PATH’ ~/.bashrc重新加载配置source ~/.bashrc再次检查 gcc 版本gcc --version查看当前 gcc 指向哪里which gcc如果仍然指向 /usr/bin/gcc可以创建符号链接可选sudo update-alternatives --install /usr/bin/gcc gcc /opt/gcc-9.5/bin/gcc 90sudo update-alternatives --install /usr/bin/g g /opt/gcc-9.5/bin/g 90然后选择默认版本sudo update-alternatives --config gcc验证 libstdc6 的版本最重要的是确认新的 libstdc.so.6 是否已经可用bash查找新编译的 libstdc 库find /opt/gcc-9.5 -name “libstdc.so.*”查看当前系统使用的 libstdc 版本strings /opt/gcc-9.5/lib64/libstdc.so.6 | grep CXXABI检查是否能被系统识别ldconfig -p | grep libstdc5. 为了让 codearts-agent 能找到新的库需要更新系统库缓存bash创建配置文件让系统知道新库的位置echo ‘/opt/gcc-9.5/lib64’ | sudo tee /etc/ld.so.conf.d/gcc-9.5.conf更新动态链接器缓存sudo ldconfig验证系统范围内的 libstdc 版本ldconfig -p | grep libstdc | head -56. 临时测试不影响系统默认设置如果你不想改变系统默认的 GCC只是为了安装 codearts-agent可以临时使用新的库路径来安装bash使用 LD_LIBRARY_PATH 临时指定库路径来安装sudo LD_LIBRARY_PATH/opt/gcc-9.5/lib64:$LD_LIBRARY_PATH dpkg -i codearts-agent-linux-arm64-26.4.4-42d8abe.deb7. 或者创建软链接到系统目录最直接的方法bash备份原始库sudo mv /usr/lib/aarch64-linux-gnu/libstdc.so.6 /usr/lib/aarch64-linux-gnu/libstdc.so.6.backup创建软链接指向新库sudo ln -s /opt/gcc-9.5/lib64/libstdc.so.6 /usr/lib/aarch64-linux-gnu/libstdc.so.6验证ls -la /usr/lib/aarch64-linux-gnu/libstdc.so.6ownerowner-PC:~/Desktop$ echo ‘/opt/gcc-9.5/lib64’ | sudo tee /etc/ld.so.conf.d/gcc-9.5.conf # 创建配置文件让系统知道新库的位置/opt/gcc-9.5/lib64ownerowner-PC:~/Desktop$ sudo ldconfig# 更新动态链接器缓存sudo: ldconfig#找不到命令ownerowner-PC:~/Desktop$ sudo ldconfig # 更新动态链接器缓存ldconfig: /usr/lib/libtinyxml2.so.10 不是符号链接ownerowner-PC:~/Desktop$ ldconfig -p | grep libstdc | head -5 # 验证系统范围内的 libstdc 版本libstdc.so.6 (libc6,AArch64) /lib/aarch64-linux-gnu/libstdc.so.6libstdc.so.6 (libc6,AArch64) /opt/gcc-9.5/lib64/libstdc.so.6libstdc.so (libc6,AArch64) /opt/gcc-9.5/lib64/libstdc.soownerowner-PC:~/Desktop$ sudo LD_LIBRARY_PATH/opt/gcc-9.5/lib64:$LD_LIBRARY_PATH dpkg -i codearts-agent-linux-arm64-26.4.4-42d8abe.deb # 使用 LD_LIBRARY_PATH 临时指定库路径来安装DeepSeek推荐方案修改 deb 包的依赖最安全 这个测试是成功的。1. 解压并修改 deb 包# 创建工作目录mkdir~/codearts-modifycd~/codearts-modify# 解压 deb 包dpkg-deb-R~/Desktop/codearts-agent-linux-arm64-26.4.4-42d8abe.deb package/查看并修改控制文件nanopackage/DEBIAN/control2. 修改依赖关系在打开的 control 文件中找到类似这样的行Depends: libstdc6 ( 9)将其改为我的系统中 libstdc6:arm64 的版本为 8.3.0.13-deepin1Depends: libstdc6 ( 8.3.0.13-deepin1)或者更宽松的版本Depends: libstdc6 ( 8)保存并退出CtrlX然后 Y回车。3. 重新打包# 重新构建 deb 包dpkg-deb-bpackage/ codearts-agent-modified.deb# 查看新包ls-lacodearts-agent-modified.deb4. 安装修改后的包sudodpkg-icodearts-agent-modified.deb5. 验证安装如果安装成功检查程序是否能正常运行# 查看是否安装成功dpkg-l|grepcodearts-agent尝试运行如果知道命令名# 通常会安装在 /opt 或 /usr/bin 下whichcodearts-agent2/dev/null||find/opt-namecodearts*-typef-executable2/dev/null确实已经安装成功了并且正常启动了但是不知道在后面的运行中会不会出现类似 version ‘GLIBCXX_3.4.26’ not found 的错误。第一个问题不能调用输入法只能英文了但是没有报错只是不能输入中文了。问题2点击对话框中的上传图片按钮闪退。6.运行时注意事项虽然安装成功了但运行 codearts-agent 时可能仍然需要新的 libstdc 库。如果运行时出现类似以下错误error while loading shared libraries: libstdc.so.6: version GLIBCXX_3.4.26 not foundundefined symbol: …解决方案创建启动脚本bash找到实际的程序路径CODEARTS_PATH$(which codearts-agent 2/dev/null || find /opt -name “codearts-agent” -type f -executable 2/dev/null | head -1)echo “找到程序: $CODEARTS_PATH”如果找到了创建包装脚本if [ -n “KaTeX parse error: Expected EOF, got # at position 28: …H ]; then #̲ 备份原始程序 sud…CODEARTS_PATH” “${CODEARTS_PATH}.original”# 创建包装脚本 sudo tee $CODEARTS_PATH EOF#!/bin/bash获取脚本所在目录的真实路径SCRIPT_DIR(dirname(dirname (dirname(readlink -f 0))exportLDLIBRARYPATH/opt/gcc−9.5/lib64:0)) export LD_LIBRARY_PATH/opt/gcc-9.5/lib64:0))exportLDL​IBRARYP​ATH/opt/gcc−9.5/lib64:LD_LIBRARY_PATHexec “SCRIPTDIR/codearts−agent.original{SCRIPT_DIR}/codearts-agent.original SCRIPTD​IR/codearts−agent.original”EOF# 添加执行权限 sudo chmod x $CODEARTS_PATH echo 已创建包装脚本将自动使用新版本的 libstdcfi测试运行bash尝试运行程序codearts-agent --help 21 | head -20清理工作可选如果一切正常可以清理临时文件bash清理修改 deb 包的工作目录rm -rf ~/codearts-modify如果需要可以删除编译 GCC 的源码节省空间rm -rf ~/Desktop/gcc-9.5.0 ~/Desktop/gcc-build总结✅ 依赖问题已解决 - 通过修改 deb 包的依赖关系成功绕过了 dpkg 的强制版本检查✅ 安装成功 - codearts-agent 已经安装到系统中⚠️ 运行时可能需要新库 - 如果运行时出错使用上面创建的包装脚本即可现在你可以尝试启动 codearts-agent 了。如果遇到任何运行时错误请告诉我具体的错误信息我会帮你解决