首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >docker和主机os中的编译和执行兼容性

docker和主机os中的编译和执行兼容性
EN

Stack Overflow用户
提问于 2020-05-20 10:08:53
回答 1查看 39关注 0票数 0

Q1:我有一个开发和生产环境,如下:

开发环境:主机CPU: x86-64,主机os: ubuntu7.6,docker container os: CentOS 18.04。生产环境:生产机CPU: x86-64,host-os: Ubuntu 18.04。

我想知道,如果我在容器内编译一个程序(依赖于boost等库和CUDA、USB等驱动程序),并将编译后的二进制文件传输到生产环境(已安装所有必需的库和设备驱动程序),是否可以直接执行该二进制文件而无需重新编译?或者,做这样的事情有风险吗?

Q2:如果开发环境更改为:

生产环境:生产机CPU: arm64,host-os: ubuntu18.04。

有没有办法让我仍然可以在容器(像arm64模拟器env)中完成所有的编译工作,并直接在生产环境中运行二进制文件?

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 09:10:46

问题1的答案是:是的,你可以。如果你在一个docker容器中编译你的代码,你将需要安装很多不必要的库来编译代码,你最终会得到一个大的图像。我通常会构建一个docker镜像来运行编译后的代码,然后将我的二进制文件复制到其中。您可能希望创建一个基本映像,然后使用该基本映像构建您的服务,这样您服务器中的所有服务都将共享基本映像,您可以节省更多空间。

Q2的答案:你可以使用docker多架构支持。https://docs.docker.com/docker-for-mac/multi-arch/

通过这种方式,您可以为所需的所有cpu体系结构构建映像。但是,您可能需要一个更复杂的Dockerfile来检查体系结构并更改构建命令,以便为每个体系结构正确编译代码(或为目标体系结构复制正确的编译二进制文件)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61903896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档