如果我生成一个cmake文件,请使用make创建一个executeble并删除可执行文件以外的所有内容,该可执行文件仍然可以使用。我可以吗,
要么
如果是这样,我该怎么办?
最佳答案
如果我正确地做到了这一点,那么您想创建一个即使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/