Фон
Я пытаюсь скомпилировать MongoDB (на данный момент двоичный файл mongos, но я думаю, что проблема относится ко всем исполняемым файлам) из кода в теге r3.6.5 и использовать созданный двоичный файл для замены двоичного файла в докере MongoDB изображение.
Выполнение этой команды:
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)
Согласно этой странице Мне нужно использовать GCC <5.1.0, чтобы избежать этого, но мне также нужно использовать GCC> 5.3.0 для компиляции ветви, так как я могу сделать оба