对于需要依赖很多库的跨平台源码编译,交叉编译环境是比较难搭建的,主流的方法有两种,第一是使用已经编译好的交叉编译工具链,比如linaro提供的arm的工具链,这种方法对于编译一般的源码应该是足够了的,但是有些需要很多依赖库的大的项目就力不从心了,如果缺少库,手动添加是比较繁琐和困难的;第二种就是自己从源码编译交叉工具,这种就要求比较高了,如果你是高手,也不嫌麻烦那么再多的依赖你也能搞的定。
这里我介绍一种操作非常简单交叉编译工具安装方法。方法的基础是muti-arch dpkg。也就是利用dpkg支持多个架构的特性,比如在amd64的Debian中可以install arm的包。目前我能测试可用的只有Debian可以。所以我们需要在容器中搭建环境。我们以arm64为例。
首先我们可以进入Debian容器内,
docker run -it debian bash
给dpkg添加新架构:
dpkg --add-architecture arm64
给更换下载源:
echo "deb http://deb.debian.org/debian stable main" > /etc/apt/sources.list
echo "deb http://deb.debian.org/debian stable-updates main" >> /etc/apt/sources.list
echo "deb http://security.debian.org stable/updates main" >> /etc/apt/sources.list
apt update
更新源完成后就可以为arm64下载包了。但是gcc还是要交叉编译的版本,
apt install gcc-aarch64-linux-gnu
如果编译需要arm64的libglib2.0-dev,假如没有现在的环境,你是很难得到这个包的。在这个环境中这非常容易
apt install libglib2.0-dev:arm64
需要下载arm64版本的包时只需在包的后面加上“:arm64”即可非常方便。