在 Docker 中部署交叉编译工具链

Deploying a cross-compilation toolchain in Docker

使用 Rocket-Chip 生成器项目开发交叉编译工具链(用于 riscv 架构)。这有很多依赖关系,我在 Ubuntu 16.04 LTS 机器上开发了所有东西。我想将它部署在其他装有旧 Linux Debian (Linux 3.2) 发行版的机器上。

由于在依赖项方面遇到很多麻烦,我无法在机器上以本机方式正确运行我的测试。

尝试使用虚拟机,效果不错,但性能还不够好。

我的问题是,是否有任何其他方法可以自包含工具链及其源和依赖项?我听说过 Docker 并用于此目的,但我想知道这对我的情况是否有用?

欢迎任何想法或指示! 谢谢, 最好的祝福。

是的,这是 docker 的一种情况。

正如您所说,它是一个交叉构建工具。所以你可以把你的源代码放在主机中,例如/my_source_code_folder_host,然后使用以下命令构建源代码。

docker run --rm -v /my_source_code_folder_host:/my_source_code_folder_container your_build_container_image

对于your_build_container_image,你需要在docker文件中设置CMDENTRYPOINT,值应该是你工具链的构建命令,默认构建my_source_code_folder_container 中的源代码,然后输出也将在 my_source_code_folder_container.

由于 my_source_code_folder_container 在主机中的文件夹 my_source_code_folder_host 中配置为 docker 卷,因此输出也将在主机中看到。

目前该方案广泛应用于某半导体公司CI团队日常交叉编译。