为mips构建时未定义

时间:2019-08-28 20:23:38

标签: go

试图交叉编译go应用程序以获取mips。

GOOS=linux GOARCH=mipsle go build ./

但是,我遇到以下问题:

# github.com/google/gopacket/afpacket
/root/go/src/github.com/google/gopacket/afpacket/options.go:176:19: undefined: pageSize
/root/go/src/github.com/google/gopacket/afpacket/options.go:177:85: undefined: pageSize
# github.com/google/gopacket/pcap
/root/go/src/github.com/google/gopacket/pcap/pcap.go:30:22: undefined: pcapErrorNotActivated
/root/go/src/github.com/google/gopacket/pcap/pcap.go:52:17: undefined: pcapTPtr
/root/go/src/github.com/google/gopacket/pcap/pcap.go:64:10: undefined: pcapPkthdr

这里的实际问题是什么? gopacket中是否存在一些体系结构限制,阻止我为mi​​ps构建它?

1 个答案:

答案 0 :(得分:0)

问题在于gopacket不是一个纯粹的go项目,它依赖CGO来运行。 通过传递env启用CGO可能会有所帮助:

CGO_ENABLED=1 GOOS=linux GOARCH=mipsle go build ./

同时,您需要准备一个miple版本的libpcap。

  1. 下载交叉编译工具链:mipsle-linux-gcc
  2. 编译libpcap:
wget http://www.tcpdump.org/release/libpcap-1.8.1.tar.gz
tar -zxvf libpcap-1.8.1.tar.gz
cd libpcap-1.8.1
./configure --host=mipsle-linux --with-pcap=linux
make  #if error occured, install dependency following the error message.

编译后,您会发现libpcap.alibpcap.so.1.8.1已建立。

  1. 使用链接的libpcap编译项目
CGO_ENABLED=1 CC=mipsle-linux-gcc GOARCH=mipsle GOOS=linux CGO_LDFLAGS="-L./libpcap-1.8.1" go build ./