在docker 中运行go 编译报 fatal error: wrapper.h: No such file or directory 错误

docker 镜像基于 golang:1.17-alpine
项目中有使用 这个。

/*
  #cgo darwin CFLAGS: -I${SRCDIR}/../../../cgo
  #cgo darwin LDFLAGS: -L${SRCDIR}/../../../cgo -lpinyin -lstdc++
  #cgo linux CFLAGS: -I/tmp/vivipos/cgo
  #cgo linux LDFLAGS: -L/tmp/vivipos/cgo -lpinyin -lstdc++
  #include "wrapper.h"
*/

gf run main.go 在启动项目的时候会报错

fatal error: wrapper.h: No such file or directory
    8 |   #include "wrapper.h"
      |            ^~~~~~~~~~~
compilation terminated.
exit status 2

请问是需要安装什么依赖?
dockerfile 如下

FROM golang:1.17-alpine

ARG TARGETPLATFORM
ARG BUILDPLATFORM
ARG VERSION

LABEL maintainer="lidong@xyhelper.cn"
LABEL org.label-schema.schema-version="1.0"
LABEL org.label-schema.name="golang-app"
LABEL org.label-schema.version=$VERSION
LABEL org.label-schema.build-platform=$BUILDPLATFORM
LABEL org.label-schema.target-platform=$TARGETPLATFORM

# 更换镜像源为 aliyunRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories

# 安装 Git 和 upx,以及设置时区
RUN apk add --no-cache git tzdata upx bash libc-dev gcc
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && rm -vrf /var/cache/apk/*

ENV GO111MODULE=on
ENV GOPROXY=https://goproxy.cn,direct
RUN mkdir /go/src/gf
COPY gf_linux_arm64 /go/src/gf
RUN cd /go/src/gf &&
chmod +x gf_linux_arm64 &&
./gf_linux_arm64 install -y &&
rm ./gf_linux_arm64

EXPOSE 8080 9111
WORKDIR /opt

COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
讨论数量: 6

需要这个文件wrapper.h和引入的go文件同目录

10个月前 评论
1012415019 (楼主) 10个月前

看看是哪个包的报错

10个月前 评论

RUN apk update && apk add -gcc musl-dev libffi-dev openssl-dev

10个月前 评论
1012415019 (楼主) 10个月前

是不是应该使用arm的镜像? file

10个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!