rust的开源库地址https://github.com/housleyjk/ws-rs

其实当webscket客户端使用https连接时,依赖的是rust的openssl库,而rust的openssl(https://docs.rs/openssl/0.10.26/openssl/)需要使用到openssl动态库,所以需要操作系统中安装openssl(https://docs.rs/openssl/0.10.26/openssl/ 也介绍了各个系统上如何安装openssl,如下:)

The openssl-sys crate will automatically detect OpenSSL installations via Homebrew on macOS and vcpkg on Windows. Additionally, it will use pkg-config on Unix-like systems to find the system installation.

# macOS
$ brew install openssl@1.1

# Arch Linux
$ sudo pacman -S pkg-config openssl

# Debian and Ubuntu
$ sudo apt-get install pkg-config libssl-dev

# Fedora
$ sudo dnf install pkg-config openssl-devel

windows下使用vcpkg,而vcpkg默认安装的库版本为x86,如果你的电脑是64位的,编译时需要设置为64位(windows 用vscode写rust程序,运行后提示(exit code: 0xc000007b),搜索说这个代码是依赖库的问题,比如我的写程序编译的版本是64位的,但依赖openssl的动态库却是32位的dll,所以报这个错)。

不明白为什么win10 64位系统编译的程序是32位的,用vcpkg就编译了openssl动态库的64位版本和x86版本,结果还是报一样的错。

故,去centos7 64位系统下编译。首先安装openssl(参考这篇文章 https://blog.csdn.net/weixin_36104843/article/details/80238762)。

完成后,需要设置OPENSSL_DIR环境变量值(在上面安装的目录为/usr/local/ssl)和OPENSSL_LIB_DIR(在上面安装的目录为/usr/local/ssl/lib),发现运行后还是会提示找不到libssl.so.1,说明还是没有找到动态库。

故需要再设置环境变更 LD_LIBRARY_PATH。

export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/ssl/lib

先写到这,过几天再完善。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐