stdint.h не найден в изображении Alpine docker - PullRequest
0 голосов
/ 11 марта 2020

Я получаю сообщение об ошибке error: no include path in which to search for stdint.h при создании изображения docker из alpine: edge, что приводит к другим ошибкам, таким как unknown type name 'uint32_t', и сбоям при компиляции программы.

Насколько я Я понимаю, что stdint.h является частью стандартной библиотеки C ++ и должен присутствовать, если только в alpine:edge нет чего-то сломанного, что, я не думаю, будет иметь место.

Мое docker изображение следующее:

FROM alpine:edge

RUN apk update && apk add \
        git \
        make \
        gcc \
        python3 \
        ldc \
        && git clone --recursive https://github.com/lomereiter/sambamba.git \
        && cd sambamba \
        && make \
        && mv sambamba /usr/local/bin/ \
        && cd ../.. \
        && rm -r sambamba

WORKDIR /wd
ENTRYPOINT ["/usr/local/bin/sambamba"]

Обратите внимание, что изображение alpine:edge необходимо, поскольку пакет ldc доступен только для него. Как это исправить? Почему stdint.h не найдено?

1 Ответ

2 голосов
/ 13 марта 2020

Для успешной компиляции Sambamba вам потребуются дополнительные пакеты:

  • g ++ (для компилятора C ++ и включает в себя)
  • zlib
  • zlib-dev (для файлы заголовков zlib)

В целом, этот модифицированный Dockerfile должен добиться цели:

FROM alpine:edge

RUN apk update && apk add \
        git \
        make \
        gcc \
        g++ \
        zlib \
        zlib-dev \
        python3 \
        ldc \
        && git clone --recursive https://github.com/lomereiter/sambamba.git \
        && cd sambamba \
        && make \
        && mv sambamba /usr/local/bin/ \
        && cd ../.. \
        && rm -r sambamba

WORKDIR /wd
ENTRYPOINT ["/usr/local/bin/sambamba"]
...