- Atlas500交叉编译环境配置 -- toolkit版本
- 1、准备工作
- 2、安装os依赖
- 3、安装开发套件包
- 交叉编译ffmpeg
- 交叉编译工程
1、安装虚拟机、安装ubuntu18.04、安装tools。
2、sudo passwd root 设置root密码
3、su root 使用root账号登陆
4、umask 检查root用户的umask值。如果umask不等于0022,请执行如下操作配置,在该文件的最后一行添加umask 0022后保存。
a:在任意目录下执行命令 vi ~/,bashrc.,打开**.bashrc文件:在文件最后一行后面添加umask 0022 内容。执行:wq!**命令保存文件并退出。
b:执行source ~/.bashrc命令使其立即生效。
5、创建安装及运行用户
groupadd HwHiAiUser useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser -s /bin/bash passwd HwHiAiUser
- 使用非root用户运行。
- (推荐)如果创建的运行用户是HwHiAiUser,其为CANN软件包的默认运行用户,在安装时无需指定该运行用户。
- 如果创建的运行用户是非HwHiAiUser,安装CANN软件包时需要指定该运行用户。
HwHiAiUser ALL=(ALL:ALL) NOPASSWD:SETENV:/usr/bin/apt-get, /usr/bin/pip, /bin/tar, /bin/mkdir, /bin/rm, /bin/sh, /bin/cp, /bin/bash, /usr/bin/make install, /bin/ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7, /bin/ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7, /bin/ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7.5, /bin/ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7.5, /usr/bin/unzip2、安装os依赖
1、全程采用root账号进行安装。采用以下命令分别检查是否安装了gcc、cmake、make以及python依赖,注意cmake版本需要在3.14以上
gcc --version g++ --version make --version cmake --version dpkg -l zlib1g| grep zlib1g| grep ii dpkg -l zlib1g-dev| grep zlib1g-dev| grep ii dpkg -l libsqlite3-dev| grep libsqlite3-dev| grep ii dpkg -l openssl| grep openssl| grep ii dpkg -l libssl-dev| grep libssl-dev| grep ii dpkg -l libffi-dev| grep libffi-dev| grep ii dpkg -l unzip| grep unzip| grep ii dpkg -l pciutils| grep pciutils| grep ii dpkg -l net-tools| grep net-tools| grep ii
如果没有安装,则使用以下命令进行安装
apt-get install -y 依赖项名
2、检查系统是否安装python开发环境。
python3.7.5 --version、pip3.7.5 --version
否则请根据如下方式安装python3.7.5。
a.使用wget下载python3.7.5源码包,可以下载到安装环境的任意目录,命令为:
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
b.进入下载后的目录,解压源码包,命令为:
tar -zxvf Python-3.7.5.tgz
c.进入解压后的文件夹,执行配置、编译和安装命令:
cd Python-3.7.5 ./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared make sudo make install
其中**“–prefix”参数用于指定python安装路径,用户根据实际情况进行修改。“–enable-shared”参数用于编译出libpython3.7m.so.1.0动态库。“–enable-loadable-sqlite-extensions”**参数用于加载libsqlite3-dev依赖。本手册以–prefix=/usr/local/python3.7.5路径为例进行说明。执行配置、编译和安装命令后,安装包在/usr/local/python3.7.5路径,libpython3.7m.so.1.0动态库在/usr/local/python3.7.5/lib/libpython3.7m.so.1.0路径。
d.查询/usr/lib64或/usr/lib下是否有libpython3.7m.so.1.0,若有则跳过此步骤或将系统自带的libpython3.7m.so.1.0文件备份后执行如下命令:将编译后的文件libpython3.7m.so.1.0复制到/usr/lib64。如果环境上没有/usr/lib64,则复制到/usr/lib目录.
sudo cp /usr/local/python3.7.5/lib/libpython3.7m.so.1.0 /usr/lib64
e.执行如下命令设置软链接:
sudo ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7 sudo ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7 sudo ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7.5 sudo ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7.5
执行上述软链接时如果提示链接已经存在,则可以先执行如下命令删除原有链接然后重新执行。
sudo rm -rf /usr/bin/python3.7.5 sudo rm -rf /usr/bin/pip3.7.5 sudo rm -rf /usr/bin/python3.7 sudo rm -rf /usr/bin/pip3.7
f.安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。
python3.7.5 --version pip3.7.5 --version
3、安装 Python3开发环境。
pip3.7.5 install attrs pip3.7.5 install psutil pip3.7.5 install decorator pip3.7.5 install numpy pip3.7.5 install protobuf==3.11.3 pip3.7.5 install scipy pip3.7.5 install sympy pip3.7.5 install cffi3、安装开发套件包
指令:
sudo -H ./Ascend-cann-toolkit_20.1.rc1_linux-x86_64.run --install-username=zhtx --install-usergroup=zhtx --install
username为安装toolkit时使用的用户名。
2、安装交叉编译工具
sudo apt-get install g+±aarch64-linux-gnu
安装结果在/usr/bin中
cmake -DCMAKE_TOOLCHAIN_FILE=/opt/Euler.cmake ..
cmake -DCMAKE_INSTALL_PREFIX=/opt/aarch64/opencv -DCMAKE_TOOLCHAIN_FILE=/opt/Euler.cmake -DWITH_WEBP=OFF -DBUILD_opencv_world=ON …
./configure --prefix=/opt/aarch64/ffmpeg --target-os=linux --arch=aarch64 --enable-cross-compile --cross-prefix=aarch64-linux-gnu- --enable-shared --disable-doc
交叉编译ffmpeg1. 准备交叉编译环境
(1) 请准备一台x86_64服务器,将我们提供的Atlas500_package.zip多次解压,获取Euler_compile_env_cross文件夹。
Euler_compile_env_cross就是我们提供的在x86_64服务器使用的交叉编译工具,方便编译Atlas 500上的程序。
(2) 修改/etc/profile,设置环境变量,添加至文件最后
export PATH=$PATH:/Euler_compile_env_cross/arm/cross_compile/install/bin
(3) 应用生效
source /etc/profile
(4) 查看交叉编译工具aarch64-linux-gnu-g++版本,验证是否生效
aarch64-linux-gnu-g++ -v
2. 编译ffmpeg
(1) 在编译前,需要下载安装ffmpeg源码(建议使用ffmpeg 4.1及以上版本)到x86_64服务器。
(2) 下载后,放到程序待运行的linux主机上,解压:
tar zxvf FFmpeg-n4.1.3.tar.gz
(3) 进入FFmpeg-n4.1.3目录,执行configure:
./configure
--prefix=
--target-os=linux
--arch=aarch64
--enable-cross-compile
--cross-prefix=/aarch64-linux-gnu-
--enable-shared
--disable-doc
注:
为ffmpeg安装路径(下同), 如:/opt/aarch64/ffmpeg
为x86_64服务器aarch64-linux-gnu放置位置,
如:/home/Atlas500_DDK/toolchains/aarch64-linux-gcc6.3/bin
安装atlasutil
交叉编译工程export DDK_PATH=$HOME/Ascend/ascend-toolkit/latest/arm64-linux
export NPU_HOST_LIB=$DDK_PATH/acllib/lib64/stub
cmake …/src -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -DCMAKE_SKIP_RPATH=TRUE
scp命令
scp paul@192.168.1.110:
外部库如opencv要用host侧编译。
Atlas500上工程预处理需要在host侧编译,深度学习部分要在drives侧编译。
无法获得锁。
sudo rm -r -f /var/lib/dpkg/lock-frontend
sudo rm -r -f /var/lib/dpkg/lock
第一次连接板卡scp报错:
ssh-keygen -R 目标主机
测试案例。
交叉编译ffmpeg
./configure --prefix=/home/zhtx/ascend_ddk/arm --target-os=linux --arch=aarch64 --enable-cross-compile --cross-prefix=/usr/bin/aarch64-linux-gnu- --enable-shared --disable-doc
make
sudo make install
交叉编译opencv
下载cmake-gui
sudo cmake -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ -D BUILD_SHARED_LIBS=ON -D BUILD_TESTS=OFF -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/zhtx/ascend_ddk/arm -D WITH_LIBV4L=ON …
sudo make
交叉编译程序:
cmake -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ …
export ASCEND_HOME=/home/zhtx/Ascend
export LD_LIBRARY_PATH=
A
S
C
E
N
D
H
O
M
E
/
a
s
c
e
n
d
−
t
o
o
l
k
i
t
/
l
a
t
e
s
t
/
a
c
l
l
i
b
/
l
i
b
64
:
{ASCEND_HOME}/ascend-toolkit/latest/acllib/lib64:
ASCENDHOME/ascend−toolkit/latest/acllib/lib64:LD_LIBRARY_PATH
export FFMPEG_PATH=/home/zhtx/ascend-ddk/arm
export LD_LIBRARY_PATH=
F
F
M
P
E
G
P
A
T
H
/
l
i
b
:
FFMPEG_PATH/lib:
FFMPEGPATH/lib:LD_LIBRARY_PATH
cd /var/lib/docker/test/InferOfflineVideo/dist/
scp zhtx@192.168.1.110:/home/zhtx/src/Samples/InferOfflineVideo/dist/main .
./main -i .1.jpg -t 0



