一、我在ARM平台上运行go程序时出现下面的问题:
Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub
这个提示很明显需要在编译的时候添加下面的命令:
CGO_ENABLED=1
二、但是添加了上面的命令之后在使用cgo编译过程中又出现以下问题:
# runtime/cgogcc_arm64.S: Assembler messages:gcc_arm64.S:28: Error: no such instruction: `stp x29,x30,[sp,'gcc_arm64.S:32: Error: too many memory references for `mov'gcc_arm64.S:34: Error: no such instruction: `stp x19,x20,[sp,'gcc_arm64.S:37: Error: no such instruction: `stp x21,x22,[sp,'gcc_arm64.S:40: Error: no such instruction: `stp x23,x24,[sp,'gcc_arm64.S:43: Error: no such instruction: `stp x25,x26,[sp,'gcc_arm64.S:46: Error: no such instruction: `stp x27,x28,[sp,'gcc_arm64.S:50: Error: too many memory references for `mov'gcc_arm64.S:51: Error: too many memory references for `mov'gcc_arm64.S:52: Error: too many memory references for `mov'gcc_arm64.S:54: Error: no such instruction: `blr x20'gcc_arm64.S:55: Error: no such instruction: `blr x19'gcc_arm64.S:57: Error: no such instruction: `ldp x27,x28,[sp,'gcc_arm64.S:60: Error: no such instruction: `ldp x25,x26,[sp,'gcc_arm64.S:63: Error: no such instruction: `ldp x23,x24,[sp,'gcc_arm64.S:66: Error: no such instruction: `ldp x21,x22,[sp,'gcc_arm64.S:69: Error: no such instruction: `ldp x19,x20,[sp,'gcc_arm64.S:72: Error: no such instruction: `ldp x29,x30,[sp],'
这个时候需要安装“aarch64-linux-gnu-gcc”,你们的平台不同安装命令也不同这个例子是ubuntu的:
sudo apt install aarch64-linux-gnu-gcc
然后编译的时候使用下面的完整命令就行了:
GOARCH=arm64 CGO_ENABLED=1 CC=aarch64-linux-gnu-gcc go build .
网友评论