复原交叉编译环境
场景:因为原本的交叉编译服务器坏了,需要在新的环境下移植相同环境
步骤方法
前置条件:新环境安装docker
https://blog.csdn.net/weixin_44355653/article/details/140267707
# 部署安装Docker
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install ca-certificates curl gnupg lsb-release
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
apt-get install docker-ce docker-ce-cli containerd.io
systemctl start docker
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
service docker restart
sudo docker run hello-world
sudo docker version
sudo docker images
注:配置 Docker 使用华为云加速器:
需要修改 Docker 的配置文件来使用华为云的加速器。
sudo nano /etc/docker/daemon.json
{ "registry-mirrors": ["https://<你的加速器地址>.mirror.huaweicloud.com"] } { "registry-mirrors": [ "https://fb780aceeee34f50a96eea0b0b878c89.mirror.swr.myhuaweicloud.com" ] }
61.249上参考配置:
cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://fb780aceeee34f50a96eea0b0b878c89.mirror.swr.myhuaweicloud.com",
"https://registry.aliyuncs.com",
"https://docker.mirrors.ustc.edu.cn"
],
"exec-opts": ["native.cgroupdriver=systemd"]
}
而后再次重启服务,测试docker是否正常运行。
service docker restart
sudo docker run hello-world
1. 打包原本环境的文件夹,移植到新环境的docker挂载目录下面(/home/flyslice/roujia-compiler)
cd /home/flyslice/roujia-compiler-dir
root@flyslice-System-Product-Name:/mnt/data_disk/home/flyslice/roujia-compiler-dir# tar -czvf poky_sdk.tar.gz poky_sdk/
gunzip poky_sdk.tar.gz poky_sdk.tar
tar -xf poky_sdk.tar -C .
2.built新docker
sudo docker load -i roujia-compiler-asan-backup.tar
3.创新docker 运行
sudo docker run -v /home/flyslice/roujia-compiler:/home/flyslice -it --name roujia-compiler-container roujia-compiler-asan-backup:v1.0.0 bash
根据之前的步骤,即可运行。
ps:需要修改权限
sudo chown -R flyslice:flyslice /home/flyslice/roujia-compiler
总结:
文件打包直接load不行,因为没有存成image,不过可以用之前docker save下来那个镜像,然后把这个poky_sdk文件夹解压放在dockers挂载目录下就能用了。
【249交叉编译步骤】
1. 容器外下载git clone源代码:
(注意使用flyslice用户,不要使用root用户!!!)
(注意使用库上最新代码!!!)
在/home/flyslice/roujia-compiler-dir/目录下创建自己的工作目录
git clone http://git.flyslice.com/zhangbin/Roujia.git
cd Roujia
git submodule update --init
2. 进入容器进行编译:
(如果没有启动容器,如环境重启了,需要start: sudo docker start roujia-compiler-container)
sudo docker exec -it roujia-compiler-container bash
source ~/poky_sdk/environment-setup-armv8a-poky-linux
cd Roujia (对应工作目录)
CC=$CC CPP=$CPP CXX=$CXX AR=$AR CCAR=$AR LD=$LD STRIP=$STRIP ./configure --cross-prefix=aarch64-poky-linux --target-arch=armv8-a+crc --enable-fpga-nvmf --enable-fpga-ha --enable-nvme-hmb --disable-fpga-stub --disable-ec-superblock --enable-asan --enable-debug --with-dpdk --enable-coverage
make SKIP_DPDK_BUILD=1 -j16