news 2026/5/15 20:58:05

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为云码道安装时codearts-agent 依赖于 libstdc++6 (>= 9)

方案二:从源码编译 GCC 9(最稳妥、最通用)
如果不想冒险修改系统文件,源码编译是官方文档和社区都推荐的可靠方法,虽然耗时,但能保证 100% 成功。

操作步骤:

安装编译所需的依赖:

bash
sudo apt update
sudo apt install build-essential libgmp-dev libmpfr-dev libmpc-dev libisl-dev flex bison zlib1g-dev
下载并解压 GCC 9.5.0 源码(9.x 系列的最新版本):

bash
wget https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.xz
tar -xvf gcc-9.5.0.tar.xz
cd gcc-9.5.0
自动下载其它依赖源码:

bash
./contrib/download_prerequisites
创建独立的构建目录并配置:

bash
cd …
mkdir gcc-build
cd gcc-build
…/gcc-9.5.0/configure --prefix=/opt/gcc-9.5 --enable-languages=c,c++ --disable-multilib
–prefix=/opt/gcc-9.5 指定了安装路径,不会覆盖系统自带的 GCC 8.3。

开始编译(这一步耗时会很长,请耐心等待):

bash
make -j$(nproc)
安装:

bash
sudo make install
配置新版本 GCC 的环境变量:
为了让 codearts-agent 和其他程序优先使用新版的 libstdc++,你可以将其路径加入系统库搜索路径中。

bash
echo ‘export LD_LIBRARY_PATH=/opt/gcc-9.5/lib64:$LD_LIBRARY_PATH’ >> ~/.bashrc
source ~/.bashrc
验证与后续
完成上述任一方案后,再次运行 gcc --version 应该能看到 GCC 9.x 的版本信息,说明新版的 libstdc++ 已可用。此时,你可以重新尝试安装 codearts-agent:

bash
sudo dpkg -i codearts-agent-linux-arm64-26.4.4-42d8abe.deb

将新的 bin 目录添加到 PATH 的开头

echo ‘export PATH=/opt/gcc-9.5/bin:$PATH’ >> ~/.bashrc

同时确保库路径正确(注意是 lib64 还是 lib)

echo ‘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 90
sudo update-alternatives --install /usr/bin/g++ g++ /opt/gcc-9.5/bin/g++ 90

然后选择默认版本

sudo update-alternatives --config gcc

  1. 验证 libstdc++6 的版本
    最重要的是确认新的 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 libstdc++
5. 为了让 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 -5
6. 临时测试(不影响系统默认设置)
如果你不想改变系统默认的 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.deb
7. 或者创建软链接到系统目录(最直接的方法)
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.6
owner@owner-PC:~/Desktop$ echo ‘/opt/gcc-9.5/lib64’ | sudo tee /etc/ld.so.conf.d/gcc-9.5.conf # 创建配置文件让系统知道新库的位置
/opt/gcc-9.5/lib64
owner@owner-PC:~/Desktop$ sudo ldconfig# 更新动态链接器缓存
sudo: ldconfig#:找不到命令
owner@owner-PC:~/Desktop$ sudo ldconfig # 更新动态链接器缓存
ldconfig: /usr/lib/libtinyxml2.so.10 不是符号链接

owner@owner-PC:~/Desktop$ ldconfig -p | grep libstdc++ | head -5 # 验证系统范围内的 libstdc++ 版本
libstdc++.so.6 (libc6,AArch64) => /lib/aarch64-linux-gnu/libstdc++.so.6
libstdc++.so.6 (libc6,AArch64) => /opt/gcc-9.5/lib64/libstdc++.so.6
libstdc++.so (libc6,AArch64) => /opt/gcc-9.5/lib64/libstdc++.so
owner@owner-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/control

2. 修改依赖关系

在打开的 control 文件中,找到类似这样的行:

Depends: libstdc++6 (>= 9)

将其改为:(我的系统中 libstdc++6:arm64 的版本为 8.3.0.13-deepin1)

Depends: libstdc++6 (>= 8.3.0.13-deepin1)

或者更宽松的版本:

Depends: libstdc++6 (>= 8)

保存并退出(Ctrl+X,然后 Y,回车)。

3. 重新打包

# 重新构建 deb 包dpkg-deb-bpackage/ codearts-agent-modified.deb
# 查看新包ls-lacodearts-agent-modified.deb

4. 安装修改后的包

sudodpkg-icodearts-agent-modified.deb

5. 验证安装

如果安装成功,检查程序是否能正常运行:

# 查看是否安装成功dpkg-l|grepcodearts-agent

尝试运行(如果知道命令名)

# 通常会安装在 /opt 或 /usr/bin 下whichcodearts-agent2>/dev/null||find/opt-name"codearts*"-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 found

undefined 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")")exportLDLIBRARYPATH=/opt/gcc9.5/lib64:LD_LIBRARY_PATH
exec “SCRIPTDIR/codearts−agent.original""{SCRIPT_DIR}/codearts-agent.original" "SCRIPTDIR/codeartsagent.original""@”
EOF

# 添加执行权限 sudo chmod +x "$CODEARTS_PATH" echo "已创建包装脚本,将自动使用新版本的 libstdc++"

fi
测试运行
bash

尝试运行程序

codearts-agent --help 2>&1 | 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 了。如果遇到任何运行时错误,请告诉我具体的错误信息,我会帮你解决!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 20:57:23

计算机教材编写:从知识体系构建到实践教学优化

1. 计算机教材的核心定位与价值计算机教材不同于普通技术文档或博客文章&#xff0c;它承担着系统化知识传递和技能培养的双重使命。一本优秀的计算机教材应该像一位经验丰富的导师&#xff0c;能够带领读者从零开始构建完整的知识体系。我在参与编写《Python编程从入门到实践》…

作者头像 李华
网站建设 2026/5/15 20:49:50

数据库系统原理 · 数据库安全性与完整性 · 自学总结

本章核心&#xff1a;数据库里存着关键数据&#xff0c;怎么防止坏人偷/改/删&#xff1f;怎么防止脏数据混进来&#xff1f;怎么在应用层把安全防线筑牢&#xff1f;一、数据库安全性1.1 是什么&#xff1f;数据库安全性 保护数据库&#xff0c;防止不合法的使用导致数据泄露…

作者头像 李华
网站建设 2026/5/15 20:48:48

Intel智能系统框架在零售物联网中的应用与优化

1. 智能零售的物联网革命零售行业正在经历一场由物联网技术驱动的深刻变革。走进任何一家现代化零售门店&#xff0c;你会发现POS终端、电子货架标签、数字标牌、智能购物车、安防摄像头等设备已经构成了一个复杂的生态系统。这些设备产生的数据流就像零售店的神经系统&#xf…

作者头像 李华