logo
Tags

Yingyu's Magic World

复原交叉编译环境

场景:因为原本的交叉编译服务器坏了,需要在新的环境下移植相同环境

步骤方法

前置条件:新环境安装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

250805-image1

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

根据之前的步骤,即可运行。 250805-image2

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