从alpine:edge构建docker镜像时,我收到error: no include path in which to search for stdint.h错误消息,这会导致其他错误,例如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

最佳答案

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

    09-30 23:49