好久没有写rust代码,今天更新了rust的版本,发现编译后怎么也运行不起来,报如下错误:
无法运行: 指定的可执行文件不是此操作系统平台的有效应用程序。所在位置 行:1 字符: 1
目前看是编译平台不匹配,但目前看系统win10且是64位没有问题,并且之前都是可以运行的,查看一下当前环境
rustc -vV
查看默认目标(如 x86_64-pc-windows-msvc)
可以使用以下命令查看环境信息:
# 查看rustc版本
rustc --version
# 显示当前安装的工具链信息
rustup show
# 检查安装更新
rustup update
# 卸载
rustup self uninstall
# 设置当前默认工具链
rustup default stable-x86_64-pc-windows-gnu
# 查看帮助
rustup -h
# -------------------------->配置工具链
# 查看工具链
rustup toolchain list
# 安装工具链
rustup toolchain install stable-x86_64-pc-windows-gnu
# 卸载工具链
rustup toolchain uninstall stable-x86_64-pc-windows-gnu
# 设置自定义工具链
rustup toolchain link <toolchain-name> "<toolchain-path>"
# -------------------------->配置一个目录以及其子目录的默认工具链
# 查看已设置的默认工具链
rustup override list
# 设置该目录以及其子目录的默认工具链
rustup override set <toolchain> --path <path>
# 取消目录以及其子目录的默认工具链
rustup override unset --path <path>
# -------------------------->配置工具链的可用目标
# 查看目标列表
rustup target list
# 安装目标
rustup target add <target>
# 卸载目标
rustup target remove <target>
# 为特定工具链安装目标
rustup target add --toolchain <toolchain> <target>
# -------------------------->配置 rustup 安装的组件
# 查看可用组件
rustup component list
# 安装组件
rustup component add <component>
# 卸载组件
rustup component remove <component>
确认过环境没有问题,又去查了以下chatGPT发现以下问题:

chatgpt并没有给出解决方案,只给了可能出问题的原因,如上图第三个问题:跨平台编译错误,它给出的是非linux跨平台编译,而是使用微软的编译器,担是我原来使用的就是wingw64不想使用微软的,于是确定了跨平台编译问题,刚跟新的rust因该是没有问题的,问题就是wingw64版本低的原因引起,当前wingw64中的gcc版本位8.3是几年前的版本,与新版的rustc编译时不兼容。
解决下载最新的MinGW-w64,地址:Releases · niXman/mingw-builds-binaries

选择倒数第一个支持win10和11,倒数第二个是老系统,下载后直接解压,然后设置环境变量,查看gcc版本已经是否是wingW64版本,完成后打开vscode编译运行,没有再报错。