gpt4 book ai didi

c++ - 编译 Mongodb 3.6.5 以插入到 Docker 镜像中

转载 作者:行者123 更新时间:2023-11-30 04:59:47 24 4
gpt4 key购买 nike

背景

我正在尝试从标记 r3.6.5 处的代码编译 MongoDB(目前是 mongos 二进制文件,但我认为该问题适用于所有可执行文件)并使用创建的二进制文件替换 MongoDB docker 中的二进制文件图片。

运行这个命令:

docker run --rm -ti mongo mongos --version

返回以下内容:

mongos version v3.6.5
git version: a20ecd3e3a174162052ff99913bc2ca9a839d618
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
allocator: tcmalloc
modules: none
build environment:
distmod: debian81
distarch: x86_64
target_arch: x86_64

问题

编译检查之一是:

Checking if C compiler is GCC 5.3.0 or newer...no
Checking if C++ compiler is GCC 5.3.0 or newer...no

如果我使用高于 5.1.0 的 GCC 版本,当我尝试运行注入(inject)了我的可执行文件的容器时,我会收到以下消息:

mongos: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by mongos)

根据 this page我需要使用 GCC < 5.1.0 来避免这种情况,但我还需要使用 GCC > 5.3.0 来编译分支,那么我该怎么做呢?

最佳答案

您的 docker 镜像需要包含一个 C++ 运行时,该运行时不早于您用于从源代码编译 mongodb 的系统上的运行时。您可以使用 --disable-minimum-compiler-version-enforcement 标志回避编译器版本检查,但我不建议这样做:构建系统出于某种原因强制执行 GCC 5.4。如果您的 docker 镜像没有 GCC 5.4+ 运行时,除了基于更新的系统制作新的 docker 镜像之外,您无能为力。

关于c++ - 编译 Mongodb 3.6.5 以插入到 Docker 镜像中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51058600/

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