方案二:从源码编译 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-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/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 了。如果遇到任何运行时错误,请告诉我具体的错误信息,我会帮你解决!

方法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.下载必要的组件

  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
  1. libgcc-s1 (GCC 支持库,必须安装)
http://ports.ubuntu.com/ubuntu-ports/pool/main/g/gcc-10/libgcc-s1_10.5.0-1ubuntu1~20.04_arm64.deb
  1. 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

更多推荐