我正在尝试交叉编译一个 go 项目 (syzkaller) 以针对 Pi Zero,以便它可以模拟 usb 设备。问题是我无法找到有关如何指定正确的浮点标志以确保与 Pi Zero 兼容的信息。我尝试过的所有方法都导致VMOV
汇编指令出现在二进制文件中并抛出非法指令。我的主机正在x86_64
运行go1.21.4
,pi zero 正在arm6l
运行go1.21.4
。交叉编译时我正在使用GOOS=linux GOARCH=arm GOARM=5
。我正在使用的 makefile 可以在这里找到:https://github.com/google/syzkaller/blob/master/Makefile(我正在编译 execprog 二进制文件)。根据我的研究,GOARM=5
应该强制软件浮点运算,但信息来源非常过时。我也尝试过为 armv5 编译,但没有成功。由于我对 GO 不是很熟悉,我也可能错误地使用了标志。以下是二进制文件的确切编译参数。任何建议都值得赞赏,谢谢。
Must remake target 'execprog'.
GOOS=linux GOARCH=arm go build "-ldflags=-s -w -X github.com/google/syzkaller/prog.\
GitRevision=121701b62358a454bbfdccfadfcce9bb843602d6+ -X 'github.com/google/syzkaller\
/prog.gitRevisionDate=20240605-134717'" "-tags=syz_target syz_os_linux syz_arch_armv6\
GOARM=5" -o ./bin/linux_arm/syz-execprog github.com/google/syzkaller/tools/syz-execprog
GOARM
在环境中是预期的;Makefile
没有为此提供规定,但是在构建之前应该可以解决问题。
失败的话,运行
直接地。