Компиляция Mongodb 3.6.5 для вставки в образ Docker - PullRequest
0 голосов
/ 27 июня 2018

Фон

Я пытаюсь скомпилировать 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 для компиляции ветви, так как я могу сделать оба

1 Ответ

0 голосов
/ 28 июня 2018

Ваш образ докера должен содержать среду выполнения C ++, которая не старше той, что в системе, которую вы использовали для компиляции mongodb из исходного кода. Вы можете обойти проверку версии компилятора с флагом --disable-minimum-compiler-version-enforcement, но я не могу этого рекомендовать: система сборки принудительно применяет GCC 5.4. Если ваш образ докера не имеет среды выполнения GCC 5.4+, вы ничего не можете сделать, кроме как создать новый образ докера на основе более новой системы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...