试图交叉编译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
中是否存在一些体系结构限制,阻止我为mips构建它?
答案 0 :(得分:0)
问题在于gopacket不是一个纯粹的go项目,它依赖CGO来运行。 通过传递env启用CGO可能会有所帮助:
CGO_ENABLED=1 GOOS=linux GOARCH=mipsle go build ./
同时,您需要准备一个miple版本的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.a
和libpcap.so.1.8.1
已建立。
CGO_ENABLED=1 CC=mipsle-linux-gcc GOARCH=mipsle GOOS=linux CGO_LDFLAGS="-L./libpcap-1.8.1" go build ./