在高山docker映像中找不到stdint.h

时间:2020-03-11 13:53:07

标签: docker alpine

从alpine:edge构建docker映像时,我收到一条error: no include path in which to search for stdint.h错误消息,它导致诸如unknown type name 'uint32_t'之类的其他错误以及编译程序时失败。

据我所知,stdint.h是C ++标准库的一部分,并且应该存在,除非alpine:edge中有破损之处,我认为情况并非如此。 / p>

我的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 个答案:

答案 0 :(得分:2)

要成功编译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"]