首页 > 系统相关 >windows下rust使用openssl

windows下rust使用openssl

时间:2024-09-19 11:47:14浏览次数:8  
标签:windows OpenSSL openssl api ms l1 dll rust

静态链接

以vcpkg安装,配置环境变量
| 环境变量名称 | 环境变量地址 | |
| X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR | C:\src\cctvhddomestically_vcpkg\packages\openssl_x64-windows-static | |
| X86_64_PC_WINDOWS_MSVC_OPENSSL_INCLUDE_DIR | C:\src\cctvhddomestically_vcpkg\packages\openssl_x64-windows-static\include | |
| X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR| C:\src\cctvhddomestically_vcpkg\packages\openssl_x64-windows-static\lib | |
image
编译时间为03:12:34 2024;

OpenSSL Version: OpenSSL 3.3.0 9 Apr 2024
Built on: built on: Sat Jun  1 03:12:34 2024 UTC
OPENSSL_DIR is not set
X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR directory: C:\src\cctvhddomestically_vcpkg\packages\openssl_x64-windows-static

动态链接

官网下载安装包,配置环境变量
image

出现了

error: failed to run custom build command for `openssl-sys v0.9.103`
note: To improve backtraces for build dependencies, set the CARGO_PROFILE_DEV_BUILD_OVERRIDE_DEBUG=true environment variable to enable debug information generation.

Caused by:
  process didn't exit successfully: `C:\shared\rustBuild\debug\build\openssl-sys-4f782b80ec2d99e2\build-script-main` (exit code: 101)
  --- stderr
  thread 'main' panicked at C:\Users\Administrator\.cargo\registry\src\rsproxy.cn-0dccff568467c15b\openssl-sys-0.9.103\build/main.rs:263:13:

  Header expansion error:
  Error { kind: ToolExecError, message: "Command \"C:\\\\Program Files\\\\Microsoft Visual Studio\\\\2022\\\\Community\\\\VC\\\\Tools\\\\MSVC\\\\14.39.33519\\\\bin\\\\HostX64\\\\x64\\\\cl.exe\" \"-nologo\" \"-MD\" \"-Z7\" \"-Brepro\" \"-I\" \"C:\\\\Program Files\\\\OpenSSL-Win64\\\\include\\\\openssl\" \"-W4\" \"-E\" \"build/expando.c\" with args cl.exe did not execute successfully (status code exit code: 2)." }

  Failed to find OpenSSL development headers.

原因是: OPENSSL_INCLUDE_DIR 写多了一个openssl
修复后, 如下
image

OpenSSL Version: OpenSSL 3.3.0 9 Apr 2024
Built on: built on: Thu Apr 11 14:00:56 2024 UTC
OpenSSL directory: C:\Program Files\OpenSSL-Win64

使用到的oepnssl地址为 OpenSSL directory: C:\Program Files\OpenSSL-Win64,编译时间为 Thu Apr 11 14:00:56 2024 UTC

C:\Program Files\OpenSSL-Win64\bin>.\openssl.exe version
OpenSSL 3.3.0 9 Apr 2024 (Library: OpenSSL 3.3.0 9 Apr 2024)

总结

use openssl::version;
use openssl::version::version;
use std::env;

fn main() {
   let openssl_version = version();

    let c_flags = version::c_flags();
    println!("c_flags  = {}", c_flags);


    println!("Hello, OpenSSL!");
    println!("OpenSSL Version: {}", openssl_version);
    let build_info = version::built_on();
    println!("Built on: {}", build_info);
 
    // 安装包openssl, 可根据OPENSSL_STATIC=1?,默认是动态链接,为1是静态链接;
    match env::var("OPENSSL_DIR") {
        Ok(dir) => println!("OpenSSL directory: {}", dir),
        Err(_) => println!("OPENSSL_DIR is not set"),
    }

    // 由vcpkg安装而来;目前看来仅有static;
    match env::var("X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR") {
        Ok(dir) => println!("X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR directory: {}", dir),
        Err(_) => println!("X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR is not set"),
    }
方案 动态链接 静态链接 备注
openssl安装包 150 KB (153,600 字节) 未能成功配置静态
vcpkg 4.57 MB (4,801,536 字节) 无动态链接

检查方式:
dumpbin /DEPENDENTS C:\shared\rustBuild\debug\iter-openssl.exe

  • 静态
 Image has the following dependencies:

    api-ms-win-core-synch-l1-2-0.dll
    USER32.dll
    CRYPT32.dll
    WS2_32.dll
    ADVAPI32.dll
    KERNEL32.dll
    ntdll.dll
    VCRUNTIME140.dll
    api-ms-win-crt-string-l1-1-0.dll
    api-ms-win-crt-runtime-l1-1-0.dll
    api-ms-win-crt-filesystem-l1-1-0.dll
    api-ms-win-crt-heap-l1-1-0.dll
    api-ms-win-crt-time-l1-1-0.dll
    api-ms-win-crt-stdio-l1-1-0.dll
    api-ms-win-crt-utility-l1-1-0.dll
    api-ms-win-crt-convert-l1-1-0.dll
    api-ms-win-crt-environment-l1-1-0.dll
    api-ms-win-crt-math-l1-1-0.dll
    api-ms-win-crt-locale-l1-1-0.dll

  Summary

        B000 .data
       24000 .pdata
       F6000 .rdata
        B000 .reloc
      369000 .text
  • 动态
    会有一个 依赖libcrypto.dll, 此处不展示了就。

反正吖, openssl坑不少, 推荐这里:
https://blog.xco.moe/posts/rust_build_musl/
https://blog.hcl.moe/archives/2630

标签:windows,OpenSSL,openssl,api,ms,l1,dll,rust
From: https://www.cnblogs.com/chy-lionni/p/18420088

相关文章

  • 【换行符】Windows、Unix、Mac不同操作系统的回车符\r和换行符\n
    一、概念:换行符‘\n’和回车符‘\r’(1)换行符就是另起一行---'\n'10换行(newline)(2)回车符就是回到一行的开头---'\r'13回车(return)所以我们平时编写文件的回车符应该确切来说叫做回车换行符CR:回车(CarriageReturn)\rLF:换行(LineFeed)\n二、应用:(1)在微软的MS-DO......
  • Acunetix v24.8 - 29 Aug 2024 高级版漏洞扫描器(最新版) 附Windows/Linux下载链接
    前言AcunetixPremium是一种Web应用程序安全解决方案,用于管理多个网站、Web应用程序和API的安全。集成功能允许您自动化DevOps和问题管理基础架构。AcunetixPremium:全面的Web应用程序安全解决方案Web应用程序对于企业和组织与客户、合作伙伴和员工的联系至关......
  • 828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
    ......
  • 当前标识(IIS APPPOOL\.NET v4.5)没有对“C:\Windows\Microsoft.NET\Framework64
    当前标识(IISAPPPOOL\.NETv4.5)没有对“C:\Windows\Microsoft.NET\Framework64\v4.0.30319\TemporaryASP.NETFiles”的写访问权限。初学者在使用ISS创建网站时是不是也遇到过类似的问题,这可能是执行当前Web请求期间生成了未经处理的异常,主要就是设置对TemporaryASP.NE......
  • Windows常用快捷键(学习笔记)
    键盘功能键:Tab,Shift,Ctrl,Win,空格,Enter,↑↓←→常用功能:Ctrl+Shift  ----  切换输入法Alt+F4----关闭窗口Ctrl+C ----复制Ctrl+V ----粘贴Ctrl+A ----全选Ctrl+X ----剪切Ctrl+Z ----撤销Ctrl+S ----保存Ctrl+D----功能:打开“添加收......
  • 使用rust自制操作系统内核
    一、系统简介本操作系统是一个使用rust语言实现,基于32位的x86CPU的分时操作系统。项目地址(求star):GitHub-CaoGaorong/os-in-rust:使用rust实现一个操作系统内核详细文档:自制操作系统·语雀1.项目特性在本项目的实现上,我认为该项目有一下特性:特性说明rust语言实......
  • Ubuntu 64系统编译android arm64-v8a 的openssl静态库libssl.a和libcrypto.a
    #!/bin/bash#Cross-compileenvironmentforAndroidonARM64andx86##ContentslicensedunderthetermsoftheOpenSSLlicense#http://www.openssl.org/source/license.html##Seehttp://wiki.openssl.org/index.php/FIPS_Library_and_Android#andhttp:......
  • windowsNLB服务
    由于配置,本例只采用win4和win51.共享网页文件、共享网站配置文件和网站日志文件分别存储到windows1的D:\FilesWeb\ContentsD\FilesWeb\Configs和D:\FilesWeb\Logs。网站主页index.html内容为"HelloNLB"。任务描述:请采用NLB,实现负载平衡。配置wi......
  • windows证书服务
    颁发模板运行打开mmc(注意看也是本地计算机的)不要忘记这个了噢熹熹再导出一下......
  • PowerShell 命令来备份 Windows 10 的服务列表:CMD 批处理命令来备份 Windows 10 的服
    PowerShell命令来备份Windows10的服务列表:powershellCopyCodeGet-Service|Export-Csv-Path"C:\ServiceListBackup.csv"-NoTypeInformation这条命令会将所有服务信息导出到C:\ServiceListBackup.csv文件中。确保您有写入该路径的权限。CMD批处理命令来备份Windo......