在Termux中运行.go文件失败报错该如何解决?
问题原因
该报错由Termux运行环境与Go编译规则不匹配导致,常见触发原因如下:
- 重装后的Termux默认给临时目录
/data/data/com.termux/files/usr/tmp/加了禁止执行的权限,go run命令会先将编译好的二进制文件写入临时目录再执行,没有执行权限就会触发找不到文件的报错 - 当前安装的Go是通用Linux架构版本,不是Termux官方源适配的版本,编译出的二进制动态链接路径和Termux的文件系统结构不兼容,系统无法正确加载执行文件
解决方法
按优先级从高到低尝试即可:
- 卸载现有Go,安装Termux官方适配版本
执行以下命令:
pkg uninstall golang -y pkg update && pkg upgrade -y pkg install golang -y
安装完成后重新执行go run main.go测试即可。
- 更换Go临时目录到有执行权限的路径
如果安装官方版本后仍报错,是临时目录权限限制未放行,执行以下命令临时生效:
export GOTMPDIR=~/gotmp mkdir -p $GOTMPDIR
需要永久生效的话,把上面两行命令添加到~/.bashrc文件末尾,执行source ~/.bashrc后再次测试即可。
- 手动编译后执行
如果不想修改环境配置,也可以直接将二进制编译到当前目录再执行,绕过临时目录限制:
go build -o main main.go ./main
内容的提问来源于stack exchange,提问作者user16277610
相关产品推荐
相关产品推荐

