背景
我试图从标记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
如果我使用的gcc版本大于5.1.0,则在尝试在注入可执行文件的情况下运行容器时会收到以下消息:
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来编译分支,所以如何同时执行这两项操作?