华为云码道安装时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
- 验证 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-modify
cd ~/codearts-modify
# 解压 deb 包
dpkg-deb -R ~/Desktop/codearts-agent-linux-arm64-26.4.4-42d8abe.deb package/
#查看并修改控制文件
nano package/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 -b package/ codearts-agent-modified.deb
# 查看新包
ls -la codearts-agent-modified.deb
4. 安装修改后的包
sudo dpkg -i codearts-agent-modified.deb
5. 验证安装
如果安装成功,检查程序是否能正常运行:
# 查看是否安装成功
dpkg -l | grep codearts-agent
6.尝试运行(如果知道命令名)
# 通常会安装在 /opt 或 /usr/bin 下
which codearts-agent 2>/dev/null || find /opt -name "codearts*" -type f -executable 2>/dev/null

确实已经安装成功了,并且正常启动了,但是不知道在后面的运行中会不会出现类似 version ‘GLIBCXX_3.4.26’ not found 的错误。
第一个问题:不能调用输入法,只能英文了,但是没有报错,只是不能输入中文了。
问题2,点击对话框中的上传图片按钮,闪退。
7.运行时注意事项
虽然安装成功了,但运行 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/gcc−9.5/lib64:LD_LIBRARY_PATH
exec “SCRIPTDIR/codearts−agent.original""{SCRIPT_DIR}/codearts-agent.original" "SCRIPTDIR/codearts−agent.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 了。如果遇到任何运行时错误,请告诉我具体的错误信息,我会帮你解决!
方法2:强制安装(可能有风险)
# 强制忽略依赖关系安装
sudo dpkg --force-depends -i codearts-agent-linux-arm64-26.5.2-2eafbaf.deb
(正在读取数据库 ... 系统当前共安装有 324744 个文件和目录。)
准备解压 codearts-agent-linux-arm64-26.5.2-2eafbaf.deb ...
正在解压 codearts-agent (26.5.2-1780317677) 并覆盖 (26.5.2-1780317677) ...
/home/owner/Desktop/codearts-agent-linux-arm64-26.5.2-2eafbaf.deb
dpkg: codearts-agent:尽管有依赖关系的问题,但不管怎样,还是按照您的要求,继续配置:
codearts-agent 依赖于 libstdc++6 (>= 9);然而:
系统中 libstdc++6:arm64 的版本为 8.3.0.13-deepin1。
正在设置 codearts-agent (26.5.2-1780317677) ...
正在处理用于 deepin-home-appstore-daemon (9.0.7) 的触发器 ...
正在处理用于 desktop-file-utils (0.23-4+sign) 的触发器 ...
正在处理用于 mime-support (3.62) 的触发器 ...
正在处理用于 bamfdaemon (0.5.4.2-1) 的触发器 ...
Rebuilding /usr/share/applications/bamf-2.index...
正在处理用于 shared-mime-info (1.10.1-1+eagle) 的触发器 ...
方法3:跨发行版替换核心组件(验证是成功的)
1.下载必要的组件
- gcc-10-base (基础包,必须最先安装)
http://ports.ubuntu.com/ubuntu-ports/pool/main/g/gcc-10/gcc-10-base_10.5.0-1ubuntu1~20.04_arm64.deb
- libgcc-s1 (GCC 支持库,必须安装)
http://ports.ubuntu.com/ubuntu-ports/pool/main/g/gcc-10/libgcc-s1_10.5.0-1ubuntu1~20.04_arm64.deb
- libstdc++6
http://ports.ubuntu.com/ubuntu-ports/pool/main/g/gcc-10/libstdc++6_10.5.0-1ubuntu1~20.04_arm64.deb
2.批量安装
将这三个 .deb 文件都放在桌面上后,打开终端,执行以下命令一次性安装它们。这会让系统自动处理它们之间的依赖顺序:
cd ~/Desktop
sudo dpkg -i gcc-10-base_10.5.0-1ubuntu1~20.04_arm64.deb libgcc-s1_10.5.0-1ubuntu1~20.04_arm64.deb libstdc++6_10.5.0-1ubuntu1~20.04_arm64.deb
3.重新安装 CodeArts Agent
现在您的系统已经拥有了 GCC 10 版本的 C++ 运行库,满足了软件要求。请再次尝试安装 CodeArts:
sudo dpkg -i codearts-agent-linux-arm64-26.5.4-57d8e8a.deb
更多推荐


所有评论(0)