利用docker搭建ubuntu arm32进行交叉编译
准备docker
下载qemu:
sudo apt-get install -y qemu-user-static
登录docker
docker login
解决docker的Get https://registry-1.docker.io/v2/: net/http: request canceled 报错
vim /etc/docker/daemon.json
写入自定义仓库
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
重启docker服务
systemctl restart docker.service
pull docker的arm32v7/ubuntu
docker pull arm32v7/ubuntu
启动ubuntu arm
docker run -it -v /usr/bin/qemu-arm-static -v /home:/home -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group -v /etc/shadow:/etc/shadow arm32v7/ubuntu:latest
退出docker容器
直接使用exit和快捷 方式(Ctrl+D)退出的容器,如果还想重新启动,需要使用命令 docker start 容器id或容器名称
docker ps -l #查看最近用过的容器
docker start friendly_dhawan #通过名称启动容器
docker attach friendly_dhawan #进入容器
进入arm32编译
修改系统默认的编译工具链:
update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100
update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100
update-alternatives --install /usr/bin/ld ld /usr/bin/ld 100
然后使用apt-get build-dep命令安装编译所需的依赖,例如:
sudo apt-get build-dep bash
使用apt-get source命令获取源码并进行编译:
apt-get source bash
cd bash-*
dpkg-buildpackage -rfakeroot -b -uc -us
这里使用了dpkg-buildpackage命令来进行编译,在编译过程中会自动调用系统默认的编译工具链.