gpt4 book ai didi

docker - 如何使cmake仅为docker构建可执行文件?

转载 作者:行者123 更新时间:2023-12-02 21:09:58 29 4
gpt4 key购买 nike

如果我生成一个cmake文件,请使用make创建一个executeble并删除可执行文件以外的所有内容,该可执行文件仍然可以使用。我可以吗,

  • 构建文件,但唯一的输出是可以使用./project
  • 执行的文件

    要么
  • 具有所有文件的生成,使用make创建可执行文件,然后删除可执行文件以外的所有内容

  • 如果是这样,我该怎么办?

    最佳答案

    如果我正确地做到了这一点,那么您想创建一个即使docker镜像没有任何依赖关系也无法执行的独立二进制文件,那么您需要在构建过程中使用static选项-我对此不是专家-也许在Compiling a static executable with CMake的以下答案中进行了介绍。

    接下来,您可以在docker中使用multi-stage builds,这将使您能够在没有可执行文件依赖的情况下获得带有可执行文件的最终最小镜像,而不仅仅是运行时环境所需的软件包。我有一个不使用make的示例,它是使用g++创建的,但是实现了类似的概念,如下所示:

    FROM gcc:5 as builder
    COPY ./hello_world_example.cc /hello_world_example.cc
    RUN g++ -o hello_world_binary -static hello_world_example.cc && chmod +x hello_world_binary

    FROM debian:jessie
    COPY --from=builder /hello_world_binary /hello_world_binary
    CMD ["/hello_world_binary"]

    运行容器的最终结果是:
    $ docker run --rm -it helloworldimage:latest
    Hello from Dockerized image

    关于docker - 如何使cmake仅为docker构建可执行文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55204756/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com