在每个黑客的职业生涯中总有这么一个时刻需要为另一种CPU架构编译应用程序。这种场景可能出现在为树莓派项目编译应用程序,为嵌入式设备创建自定义镜像,或者让自己的软件支持不同平台。亦或是,我们只是想知道这个过程是怎么样的,好奇最终汇编代码和桌面电脑上无处不在的x86-64/amd64架构汇编有何区别。
不论是哪种原因,通常我们都需要整理好行装进行一段朝圣之旅。但是这个旅程不是登上孤独的山顶,而是通向地狱深渊,是一段从开发应用程序的阳光平原走向计算机体系结构的黑暗洞穴之旅:底层系统和嵌入式变成带来的难以捉摸的世界。介于这次跋涉的前景堪忧,大部分黑客最终通过Ctrl+Z结束了旅程,回到了地面,一边喘气一边警告同伴交叉编译、QEMU和chroot的恐怖之处。
好了,我可能有点夸张了。但是真相是为其他CPU架构构建应用程序没有那么直截了当。多亏了Docker 19.03带来实验性的插件,让多架构构建比以往要方便很多。
为了理解Docker对多架构构建支持的重要性,首先我们需要了解如何为陌生架构构建应用程序。
背景:为陌生架构编译应用的方法
注:读者如果对本节概念已经了解,或者只是想知道如何构建镜像,可以跳过本节。