搭建第一个CANN开发环境:避坑指南
说到环境搭建,我第一次装CANN的时候真的是踩了一堆坑。从下载安装包找了半天,到装完发现版本不对,再到环境变量配错导致找不到库文件…整整折腾了两天才搞定。后来在训练营老师的指导下,我重新梳理了整个流程,现在10分钟就能装好。今天就把这些经验分享给大家,让你们少走弯路。
搭建第一个CANN开发环境:避坑指南
昇腾训练营报名链接:https://www.hiascend.com/developer/activities/cann20252#cann-camp-2502-intro
训练营简介:2025年昇腾CANN训练营第二季,基于CANN开源开放全场景,推出0基础入门系列、码力全开特辑、开发者案例等专题课程,助力不同阶段开发者快速提升算子开发技能。获得Ascend C算子中级认证,即可领取精美证书,完成社区任务更有机会赢取华为手机、平板、开发板等大奖。
前言
说到环境搭建,我第一次装CANN的时候真的是踩了一堆坑。从下载安装包找了半天,到装完发现版本不对,再到环境变量配错导致找不到库文件…整整折腾了两天才搞定。
后来在训练营老师的指导下,我重新梳理了整个流程,现在10分钟就能装好。今天就把这些经验分享给大家,让你们少走弯路。
一、硬件准备与检查
在开始之前,首先要确认你的硬件环境。CANN开发有两种模式:
1.1 有昇腾硬件(推荐)
如果你有昇腾硬件(Atlas推理卡、训练卡、开发板等),那是最好的,可以真正跑起来看效果。
检查硬件是否识别:
# 查看NPU设备
npu-smi info
# 如果看到类似下面的输出,说明硬件识别正常
# +-------------------+
# | npu-smi 24.1.0 |
# +-------------------+
如果命令不存在或没有输出设备,可能是驱动没装好,需要先安装驱动firmware和driver。
1.2 没有昇腾硬件
没有硬件也能学习!CANN提供了模拟器(simulator)模式,可以在x86服务器上运行代码,虽然性能数据不准,但用来学习语法和调试逻辑完全够用。
我刚开始就是在没有硬件的情况下学的,写的代码都能跑,只是看不到真实性能而已。
二、操作系统要求
CANN对操作系统有一定要求,已验证可用的组合:
| 操作系统 | 版本 | 状态 |
|---|---|---|
| Ubuntu | 18.04/20.04/22.04 | ✅ 完美支持 |
| CentOS | 7.6/8.2 | ✅ 支持 |
| EulerOS | 2.8/2.10 | ✅ 官方推荐 |
| Windows | - | ❌ 不支持 |
| macOS | - | ❌ 不支持 |
我自己用的是Ubuntu 20.04,体验最好。CentOS也可以,但有些依赖包需要手动装。
检查系统版本:
# Ubuntu
cat /etc/issue
# 输出: Ubuntu 20.04.3 LTS
# CentOS
cat /etc/redhat-release
# 输出: CentOS Linux release 7.6.1810 (Core)
三、安装依赖包
在安装CANN之前,需要先装一些依赖。这一步很多人容易忽略,导致后面各种奇怪的错误。
3.1 Ubuntu系统
# 更新软件源
sudo apt update
# 安装基础依赖
sudo apt install -y gcc g++ make cmake zlib1g zlib1g-dev \
openssl libsqlite3-dev libssl-dev libffi-dev unzip \
pciutils net-tools libblas-dev gfortran libblas3
# 安装Python3(推荐3.7+)
sudo apt install -y python3 python3-pip python3-dev
# 验证Python版本
python3 --version
# 应该输出: Python 3.8.x 或更高版本
3.2 CentOS系统
# 安装基础依赖
sudo yum install -y gcc gcc-c++ make cmake zlib-devel \
openssl-devel sqlite-devel libffi-devel unzip \
pciutils net-tools blas-devel
# 安装Python3
sudo yum install -y python3 python3-pip python3-devel
四、下载CANN安装包
4.1 从官网下载
访问昇腾社区下载中心:https://www.hiascend.com/software/cann/community
下面是官方下载页面的实际截图:

选择对应版本时需要注意:
- CANN版本:建议选最新的稳定版(如8.3.RC1)
- alpha版本:提供新特性,供开发者提前试用
- beta版本:核心功能完善,稳定性较高
- CPU架构:x86_64或AArch64(根据你的服务器)
- 芯片型号:根据你的硬件选(Atlas 300I/800/900等)
- 操作系统:Linux(Ubuntu/CentOS/EulerOS)
需要下载的包:
- Ascend-cann-toolkit(必须):开发工具包
- Ascend-cann-kernels(必须):算子库
- Ascend-cann-nnae(可选):推理引擎
- Ascend-cann-nnrt(可选):训练引擎
我踩过的坑:第一次只下载了toolkit,没下载kernels,结果很多算子都用不了。一定要把toolkit和kernels都下载下来!
4.2 使用wget下载(推荐)
官网下载有时候很慢,可以用命令行:
# 创建下载目录
mkdir -p ~/Ascend/downloads
cd ~/Ascend/downloads
# 下载toolkit(示例URL,实际请从官网获取)
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.0.RC1/Ascend-cann-toolkit_8.0.RC1_linux-x86_64.run
# 下载kernels
wget https://ascend-repo.obs.cn-east-2.myhuaweicloud.com/CANN/CANN%208.0.RC1/Ascend-cann-kernels-910b_8.0.RC1_linux.run
五、安装CANN Toolkit
5.1 给安装包添加执行权限
cd ~/Ascend/downloads
chmod +x Ascend-cann-toolkit_*.run
chmod +x Ascend-cann-kernels-*.run
5.2 安装toolkit
# 运行安装程序
./Ascend-cann-toolkit_8.0.RC1_linux-x86_64.run --install
# 安装过程中会提示选择安装路径,默认是:
# /usr/local/Ascend/ascend-toolkit/latest
# 也会问你是否安装到用户目录,我一般选择 n(系统级安装)
我踩过的坑2:第一次装的时候,磁盘空间不够导致安装失败。toolkit大概需要10GB空间,务必提前检查:
# 检查磁盘空间
df -h /usr/local
5.3 安装kernels
./Ascend-cann-kernels-910b_8.0.RC1_linux.run --install
kernels的安装路径会自动和toolkit保持一致。
六、配置环境变量(超级重要!)
这一步是90%的新手出问题的地方。我当时因为环境变量没配对,编译代码找不到头文件,调试了整整一个下午。
6.1 临时设置(测试用)
source /usr/local/Ascend/ascend-toolkit/set_env.sh
这种方式只在当前终端有效,关闭终端后就失效了。
6.2 永久设置(推荐)
编辑 ~/.bashrc 文件:
vim ~/.bashrc
在文件末尾添加:
# CANN Environment
export ASCEND_TOOLKIT_HOME=/usr/local/Ascend/ascend-toolkit/latest
source $ASCEND_TOOLKIT_HOME/set_env.sh
# Python路径(如果需要)
export PYTHONPATH=$ASCEND_TOOLKIT_HOME/python/site-packages:$PYTHONPATH
# 添加到PATH
export PATH=$ASCEND_TOOLKIT_HOME/bin:$PATH
保存后执行:
source ~/.bashrc
6.3 验证环境变量
# 检查环境变量
echo $ASCEND_TOOLKIT_HOME
# 应该输出: /usr/local/Ascend/ascend-toolkit/latest
echo $LD_LIBRARY_PATH
# 应该能看到CANN相关的路径
# 检查命令是否可用
which ascendc
# 应该输出: /usr/local/Ascend/ascend-toolkit/latest/bin/ascendc
七、验证安装是否成功
7.1 检查版本信息
# 查看CANN版本
cat /usr/local/Ascend/ascend-toolkit/latest/version.info
# 输出类似:
# Version=8.0.RC1
# Build_Time=2024-12-15
7.2 运行简单测试
CANN自带了一些sample代码,我们可以用它来测试:
# 进入samples目录
cd /usr/local/Ascend/ascend-toolkit/latest/samples/operator/AddCustom
# 如果有NPU设备
bash run.sh
# 如果没有NPU设备(使用模拟器)
bash run_cpu.sh
如果能正常运行并输出结果,说明安装成功!
7.3 测试Python环境
# 创建测试脚本 test_acl.py
import acl
# 初始化
ret = acl.init()
print(f"ACL init result: {ret}")
# 如果输出0,说明成功
if ret == 0:
print("✅ CANN Python环境配置成功!")
acl.finalize()
else:
print("❌ 初始化失败")
运行测试:
python3 test_acl.py
八、安装开发IDE(可选但推荐)
8.1 MindStudio
MindStudio是华为官方提供的IDE,功能很强大:
- 代码编辑和高亮
- 算子开发模板
- 可视化调试
- 性能分析
下载地址:https://www.hiascend.com/software/mindstudio
安装步骤:
# 解压安装包
tar -zxvf MindStudio-xxx.tar.gz
# 运行安装脚本
cd MindStudio-xxx
./MindStudio.sh
8.2 VS Code(我常用的)
如果你习惯用VS Code,也可以装这些插件:
- C/C++(微软官方)
- Python
- Ascend Extension(社区提供)
我个人更喜欢VS Code,因为比较轻量,而且我已经用习惯了。
九、常见问题排查
分享几个我和同学们遇到过的典型问题:
问题1:找不到libascendcl.so
报错信息:
error while loading shared libraries: libascendcl.so: cannot open shared object file
原因:环境变量没配置或配置错误
解决方法:
# 检查库文件是否存在
ls /usr/local/Ascend/ascend-toolkit/latest/lib64/libascendcl.so
# 如果存在,重新设置环境变量
source /usr/local/Ascend/ascend-toolkit/latest/set_env.sh
# 或者手动添加
export LD_LIBRARY_PATH=/usr/local/Ascend/ascend-toolkit/latest/lib64:$LD_LIBRARY_PATH
问题2:Python import acl失败
报错信息:
ModuleNotFoundError: No module named 'acl'
解决方法:
# 安装acl Python包
pip3 install /usr/local/Ascend/ascend-toolkit/latest/python/site-packages/acl-*.whl
# 或者设置PYTHONPATH
export PYTHONPATH=/usr/local/Ascend/ascend-toolkit/latest/python/site-packages:$PYTHONPATH
问题3:npu-smi命令找不到
原因:驱动没装或PATH没设置
解决方法:
# 检查驱动是否安装
ls /usr/local/Ascend/driver/
# 如果没有,需要先安装驱动
# 驱动安装包也在官网下载
# 设置PATH
export PATH=/usr/local/Ascend/driver/tools:$PATH
问题4:版本不匹配
这个坑我踩得最深!toolkit、kernels、driver三者的版本必须匹配,否则会出各种奇怪的问题。
检查版本:
# toolkit版本
cat /usr/local/Ascend/ascend-toolkit/latest/version.info
# driver版本
cat /usr/local/Ascend/driver/version.info
# 两者的主版本号(如8.0)必须一致
十、下一步学习建议
环境搭好了,接下来可以:
-
跑通官方samples(1天)
- 了解代码结构
- 熟悉编译流程
-
学习Ascend C基础语法(3-5天)
- 看训练营视频
- 读官方文档
-
动手写第一个算子(1周)
- 从最简单的Add开始
- 理解算子开发流程
我当时第一次装花了两天,第二次有经验了只用了10分钟。所以如果你也遇到问题,不要气馁,这很正常。实在解决不了,可以去CANN社区提问,或者参加训练营有老师指导。
下一篇文章,我会介绍Ascend C编程语言的基础语法,开始真正的算子开发之旅!
如果这篇文章对你有帮助,欢迎点赞收藏!有问题欢迎留言讨论~
更多推荐



所有评论(0)