Golang工具asm在Linux上出现exec format错误怎么办

Golang工具asm在Linux上出现exec format错误怎么办 大家好,我对Go语言很感兴趣,但还是一名新手。在Linux上运行一个项目时,我遇到了一些麻烦。错误信息如下:

+ Testing ...
mv ecc_pub.bin /home/boom/zkPoD/zkPoD-lib/pod_go/test_data/ecc_pub.bin
go tool asm: fork/exec /usr/local/go/pkg/tool/linux_amd64/asm: exec格式错误
Makefile:69: recipe for target 'test' failed
make: *** [test] Error 1

是不是我的Go环境没有配置好?我发现有一个问题是关于在Kali上因为版本问题无法运行。 Go版本是 go1.17.2 linux/amd64。 Linux系统是 Linux boom 5.4.0-89-generic #100~18.04.1-Ubuntu SMP Wed Sep 29 10:59:42 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

谢谢!!!


更多关于Golang工具asm在Linux上出现exec format错误怎么办的实战教程也可以访问 https://www.itying.com/category-94-b0.html

2 回复

你使用了任何字符串吗?

更多关于Golang工具asm在Linux上出现exec format错误怎么办的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这个错误通常是因为Go工具链的架构不匹配导致的。exec format error表明系统尝试执行一个无法识别的二进制格式。

检查你的Go工具链架构是否与系统匹配:

# 查看当前Go工具链的架构
file /usr/local/go/pkg/tool/linux_amd64/asm

# 应该显示类似这样的信息:
# /usr/local/go/pkg/tool/linux_amd64/asm: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

如果架构不匹配,需要重新安装正确版本的Go。对于你的系统(x86_64 Ubuntu),应该使用amd64版本:

# 移除当前安装
sudo rm -rf /usr/local/go

# 下载正确版本
wget https://golang.org/dl/go1.17.2.linux-amd64.tar.gz

# 安装
sudo tar -C /usr/local -xzf go1.17.2.linux-amd64.tar.gz

# 更新PATH(如果还没设置)
export PATH=$PATH:/usr/local/go/bin

# 验证安装
go version

如果问题仍然存在,检查是否有残留的旧版本工具链:

# 清理Go缓存
go clean -cache
go clean -modcache

# 重新构建工具链
go install -a std

# 或者完全重新初始化
cd /usr/local/go/src
sudo ./make.bash

另一个可能的原因是文件损坏,可以验证工具链完整性:

# 检查asm工具是否完整
ls -la /usr/local/go/pkg/tool/linux_amd64/asm
md5sum /usr/local/go/pkg/tool/linux_amd64/asm

# 重新安装工具链
go tool dist install asm
回到顶部