【发布时间】:2021-10-22 00:12:11
【问题描述】:
我们想在 MacOS 下为 Linux 构建gopacket。
我们已经尝试过。
CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build
错误
..gopacket/pcap/pcap.go:30:22: undefined: pcapErrorNotActivated
..gopacket/pcap/pcap.go:52:17: undefined: pcapTPtr
..gopacket/pcap/pcap.go:64:10: undefined: pcapPkthdr
- 尝试通过docker进行交叉编译golang-crossbuild
docker run -it --rm \
-v /Users/my/server:/go/src/my/server \
-w /go/src/my/server \
-e CGO_ENABLED=1 \
-e CGO_LDFLAGS+="-L/libpcap/libpcap-1.8.1-amd64" \
docker.elastic.co/beats-dev/golang-crossbuild:1.16.4-main \
--build-cmd "GOOS=linux GOARCH=amd64 go build . " \
-p "linux/amd64"
错误
...pcap/pcap_unix.go:34:18: fatal error: pcap.h: No such file or directory
#include <pcap.h>
^
compilation terminated.
有没有更好的方法在 MacOS 下交叉编译 gopacket for linux?
【问题讨论】:
-
如果您已经在 linux 容器中构建,那么您并不是真正的交叉编译。您只需要安装软件包的先决条件,例如 libpcap 和 gcc。
标签: go cross-compiling