Ovdje ćete pronaći rješenja za česte probleme prilikom kompilacije OpenSSL-a.
Simptom:
fatal error C1083: Cannot open include file: 'stdlib.h': No such file or directory
Uzrok: Windows SDK nije instaliran ili nije u PATH-u.
Rješenje:
# Opcija 1: Instalirajte Windows SDK winget install Microsoft.WindowsSDK.10.0.22621 # Opcija 2: U Visual Studio Installeru # → "Individual Components" → odaberite "Windows 10 SDK"
Zatim: Ponovno učitajte Visual Studio okruženje:
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
Simptom:
'perl' is not recognized as an internal or external command
Uzrok: Perl nije instaliran ili nije u PATH-u.
Rješenje:
# Instalirajte Perl winget install StrawberryPerl.StrawberryPerl # Ručno postavite PATH (ako još uvijek nije pronađen nakon ponovnog pokretanja) set PATH=C:\Strawberry\perl\bin;%PATH%
Simptom:
NASM not found - please read INSTALL.md
Uzrok: NASM nije instaliran ili nije u PATH-u.
Rješenje A: Instalirajte NASM (preporučeno)
winget install NASM.NASM # Postavite PATH (putanja može varirati!) set PATH=%LOCALAPPDATA%\bin\NASM;%PATH% # Provjerite nasm -v
Rješenje B: Kompilirajte bez NASM-a (sporije)
perl Configure VC-WIN64A no-asm --prefix=D:\Projects\openssl-3.6.0\bin
Bez NASM-a, AES i SHA su značajno sporiji!
Simptom:
'cl' is not recognized as an internal or external command
Uzrok: Visual Studio okruženje nije učitano.
Rješenje:
call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat"
Savjet: Uvijek pokrenite „Developer Command Prompt for VS 2022“ iz Start izbornika - okruženje je već učitano.
Simptom: PowerShell skripta se prekida iako cl.exe radi.
Uzrok: cl.exe piše informacije o verziji na stderr, što se interpretira kao greška s $ErrorActionPreference = „Stop“.
Rješenje u skripti:
# Ispravno rukujte cl.exe izlazom try { $clOutput = & cl 2>&1 | Out-String Write-Host "cl.exe pronađen" } catch { Write-Host "cl.exe pronađen (stderr ignoriran)" }
Simptom:
The program can't start because libcrypto-3-x64.dll is missing
Rješenje:
1. Kopirajte DLL datoteke u mapu aplikacije:
copy D:\Projects\openssl-3.6.0\bin\bin\libcrypto-3-x64.dll .\ copy D:\Projects\openssl-3.6.0\bin\bin\libssl-3-x64.dll .\
2. Ili automatski kopirajte u .csproj:
<ItemGroup> <None Update="libcrypto-3-x64.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="libssl-3-x64.dll"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> </ItemGroup>
Simptom:
openssl list -signature-algorithms | findstr mldsa # Nema izlaza
Mogući uzroci:
1. Pogrešna verzija OpenSSL-a - Potrebna je 3.6.0 ili novija
openssl version
# Mora biti: OpenSSL 3.6.0 ili noviji
2. Provider nije učitan
openssl list -providers # Trebao bi pokazati "default" i eventualno "oqsprovider"
Ako vaš problem nije ovdje naveden:
Wolfgang van der Stille @ EMSR DATA d.o.o. - Post-Quantum Cryptography Professional