google / gopacket

Provides packet processing capabilities for Go
BSD 3-Clause "New" or "Revised" License
6.29k stars 1.12k forks source link

arm/arm64 architecture cross compilation failed #1049

Open YouZhengChuan opened 2 years ago

YouZhengChuan commented 2 years ago
# GOOS=linux GOARCH=arm64 go build main.go
# github.com/google/gopacket/pcap
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:30:22: undefined: pcapErrorNotActivated
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:52:17: undefined: pcapTPtr
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:64:10: undefined: pcapPkthdr
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:103:6: undefined: pcapBpfProgram
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:110:7: undefined: pcapPkthdr
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:268:33: undefined: pcapErrorActivated
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:269:33: undefined: pcapWarningPromisc
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:270:33: undefined: pcapErrorNoSuchDevice
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:271:33: undefined: pcapErrorDenied
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:272:33: undefined: pcapErrorNotUp
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:272:33: too many errors
kaajii commented 2 years ago

CGO_ENABLED="1"

DeepSeaCat commented 2 years ago

There are many problems

CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC=clang go build -o name ../cmd/name

runtime/cgo

linux_syscall.c:67:13: error: implicit declaration of function 'setresgid' is invalid in C99 [-Werror,-Wimplicit-function-declaration] linux_syscall.c:67:13: note: did you mean 'setregid'? /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/unistd.h:593:6: note: 'setregid' declared here linux_syscall.c:73:13: error: implicit declaration of function 'setresuid' is invalid in C99 [-Werror,-Wimplicit-function-declaration] linux_syscall.c:73:13: note: did you mean 'setreuid'? /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/unistd.h:595:6: note: 'setreuid' declared here

kaajii commented 2 years ago

try use qemu-aarch64-static

build in docker. dockerfile like:

FROM arm64v8/centos:7

RUN yum install -y --nogpgcheck \
libpcap-devel \
gcc \
wget 

RUN wget -O /usr/bin/qemu-aarch64-static \
    https://github.com/multiarch/qemu-user-static/releases/download/v7.0.0-7/qemu-aarch64-static

ENV GO_VERSION=1.19 \
    GO111MODULE=on \
    GOROOT=/opt/go \
    GOPATH=/root/go \
    GOPROXY=https://goproxy.cn,direct \
    GOPRIVATE=git.ucloudadmin.com \
    PATH=/opt/go/bin:/root/go/bin:${PATH}

RUN cd /opt \
    && wget -O go.tar.gz https://go.dev/dl/go${GO_VERSION}.linux-arm64.tar.gz \
    && tar -xzf go.tar.gz \
    && rm -f go.tar.gz \

run docker run --rm --privileged multiarch/qemu-user-static:register

docker run --rm -e CGO_ENABLED=1 -e GOOS=linux -e GOARCH=arm64 -v :/opt/code -w /opt/code /go_packet:latest go build

jashakimov commented 7 months ago
# GOOS=linux GOARCH=arm64 go build main.go
# github.com/google/gopacket/pcap
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:30:22: undefined: pcapErrorNotActivated
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:52:17: undefined: pcapTPtr
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:64:10: undefined: pcapPkthdr
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:103:6: undefined: pcapBpfProgram
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:110:7: undefined: pcapPkthdr
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:268:33: undefined: pcapErrorActivated
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:269:33: undefined: pcapWarningPromisc
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:270:33: undefined: pcapErrorNoSuchDevice
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:271:33: undefined: pcapErrorDenied
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:272:33: undefined: pcapErrorNotUp
../../../../pkg/mod/github.com/google/gopacket@v1.1.20-0.20201227084530-a0bf7fd45b3d/pcap/pcap.go:272:33: too many errors

Did you resolve this problem?