泸州市住房与城乡建设局网站,深圳企业名录深圳黄页,网站建设需求范文,给vps安装wordpress1 起初环境没有问题#xff1a;在Rust开发的时候起初使用的是mingw64平台加stable-x86_64-pc-windows-gnu编译链#xff0c;当使用到diesel时会报错#xff0c;如下#xff1a;
x86_64-w64-mingw32/bin/ld.exe: cannot find -lmysql具体信息很长这是主要信息是rust找不到链…1 起初环境没有问题在Rust开发的时候起初使用的是mingw64平台加stable-x86_64-pc-windows-gnu编译链当使用到diesel时会报错如下
x86_64-w64-mingw32/bin/ld.exe: cannot find -lmysql具体信息很长这是主要信息是rust找不到链接mysql的驱动在哪里
解决方式解决找到mysql的安转目录找到lib目录下的libmysql.dll把它放到
C:\Users\hp\.rustup\toolchains\stable-x86_64-pc-windows-gnu\lib\rustlib\x86_64-pc-windows-gnu\lib目录下问题解决。
担是这是我安装Rust时默认的mingw64编译环境现在我使用Tauri框架开发跨平台桌面程序在windows中肯定不行于是我切换到了visual studio环境下的编译工具链首先是vs安装了c的windows的桌面开发环境具体操做
切换rust的编译工具
rustup default stable-x86_64-pc-windows-msvc
默认没有安装该工具就会下载大小将近2G如果想使用两个环境可以保留两个工具链如果嫌弃文件过大可删除如下
rustup toolchain uninstall stable-x86_64-pc-windows-msvc
生成的文件路径如下 修改C:\Users\hp\.rustup目录下的settings文件如下
default_host_triple x86_64-pc-windows-msvc
default_toolchain stable-x86_64-pc-windows-msvc
profile default
version 12[overrides]其中default_host_triple x86_64-pc-windows-gnu要填写正确否则vscode打开后Rust的代码解析插件始终无法启动
切换vs环境后就可以使用Tauri 2.x框架开发基于webView的跨平台的桌面程序同时支持android的快捷开发后端使用Rust语言前端使用js方便地搭建了安卓开发环境和windows桌面开发环境。
2 切换后报符号链接问题切换工具链后在Rust使用ORM的diesel框架又报一些链接错误的问题比如mysqlClient链接错误如果你本地安装了mysql就找到lib目录下的mysqlclient.lib配置环境变量和客户端版本号如果没有安装mysql就去下载MySQL :: Download MySQL Connector/C (Archived Versions)保持all选项
如下
MYSQLCLIENT_LIB_DIRC:\Program Files\MySQL\MySQL Server 5.7\lib
MYSQLCLIENT_VERSION8.0
配置完成后重新编译此时发现链接不到库的问题解决但同时发生代码报错问题代码符号找不到链接错误等一大堆问题主要定位到mysqlclient-sys库下的build.rs文件下的95行当前环境检测失败无法编译报错。
按照这个可能可行但由于磁盘有限下载一般就暂停了这种环境问题的第三方包下载太麻烦并且报错很可能与vs版本有关于是就放弃vs的编译工具链。
3 切换回原来的工具链如果暂时不开发windows桌面和安卓程序完全可以使用mingw64平台的工具链环境这样不容易出错。切换方式比较简单如下
rustup default stable-x86_64-pc-windows-gnu 没有就会下载并修改settings文件中的默认信息这时可以删除vs的工具链rustup toolchain uninstall stable-x86_64-pc-windows-msvc注意settings的配置信息否则vscode的代码解析器插件服务无法启动。
rustup常见命令
# 查看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 componentcargo的基础命令在用户主目录的 .cargo 目录下新建一个文件命名为 config没有扩展名并输入以下内容配置下载的数据源不配置下载速度可行
[source.crates-io]
registry https://github.com/rust-lang/crates.io-index
replace-with ustc## 二选择一
## replace-with XXX 选择配置# 中国科学技术大学
[source.ustc]
registry git://mirrors.ustc.edu.cn/crates.io-index# 清华大学
[source.tuna]
registry https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git查看cargo版本
cargo --version# 新建项目
cargo new project_name# 构建项目
cargo build# 运行项目
cargo run# 检查项目
cargo check# 查看帮助
cargo -h一切切换回来后重新编译原来的Diesel库项目发现没有任何报错担是在vs平台的编译链上的问题任然存在如果你想一直基于vs平台下的编译链建议在安装Rust时就和当前vs环境友好搭配下载安装而我的是基于mingw64安转的忽略了很多环境切换上的问题到此windows中使用Rust的ORM框架diesel报错问题初步解决。
4问题解决如果你windows上安装了mysql服务就找到安装目录下的lib目录在项目中创建build.rs文件指定依赖库的路径如下代码
fn main() {// 设置 MySQL 客户端库的搜索路径找到libmysql.dll和libmysql或mysqlclientprintln!(cargo:rustc-link-searchnativeC:\\Program Files\\MySQL\\MySQL Server 5.7\\lib);// 设置需要链接的库名println!(cargo:rustc-link-libdyliblibmysql); // 使用 dylib 表示动态链接
}如果你本地没有安装过mysql数据库就从上面地址下载 MySQL :: Download MySQL Connector/C (Archived Versions) 的mysqlClient库需要注意的是如果你使用vs的编译工具链就确保在链接时使用的是windows下的mysqlClient客户端即lib下的mysqlclient.lib库文件如果使用的是mingw64平台的stable-x86_64-pc-windows-gnu编译链就去链接libmysql库如果你链接的是mysqlclient.lib就会报符号链接错误因为当前使用的是mingw64环境属于跨平台的linux环境需要使用libmysql.lib库如果是vs环境需要去下载MySQL Connector C 6.1找到lib中的vs14下的mysqlclient.lib这是windows平台下的如果报符号错误问题换一个版本基本解决注意如果你配置了环境变量确保MYSQLCLIENT_LIB_DIR指定的mysql客户端的库的类型 一般下载来的使用C:\Program Files\MySQL\MySQL Connector C 6.1\lib\vs14路径是windows平台下的如果项目本地没有build.rs配置则该环境变量起作用会发生符号链接错误而当前你使用的是 stable-x86_64-pc-windows-gnu工具链是linux环境你因该设置C:\Program Files\MySQL\MySQL Server 5.7\lib指定libmysql.lib库如果里面连个都用最好在创建一个build.rs文件明确指定否则用到了libmysqlclient下的库仍然报符号错误。