rust更新后编译的exe文件执行报错

好久没有写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编译运行,没有再报错。

相关推荐
不正经学生3 小时前
C语言预处理详解:编译器真正动手之前的那些事
c语言·开发语言·算法·面试·bug
门思科技3 小时前
LoRaWAN 设备类别:Class A、B、C 对比与选型指南
c语言·开发语言·php
恋恋西风6 小时前
C++ 理解 std::thread 在单核和多核上的行为差异
开发语言·c++
学长毕业设计6 小时前
基于SpringBoot的公益基金管理系统(源码+文档+讲解视频)
java·spring boot·后端
Brilliantwxx6 小时前
【Linux】 进程(9)程序与进程地址空间(基础+进阶+面试题)
linux·运维·服务器·开发语言·c++
东小西6 小时前
【SAA实战】第 3 篇 · 工具调用全攻略:把业务能力交给 Agent 自己调度
java·后端·spring
东小西6 小时前
【SAA实战】第 4 篇 · Agent 短期记忆:saver 让 Agent 跨轮记得住(threadId 隔离)
java·后端·spring
mldong6 小时前
流程实例如何沿着箭头走到结束:Rust 工作流引擎的执行内核
架构·rust
BizzZ_6 小时前
C++(22)——类型转换和IO流
开发语言·c++
阿kun要赚马内6 小时前
MySQL 索引基础
后端·mysql