Π¦Π΅Π»Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΡ - ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Curl Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Π½Π° C++ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ https-Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΌΠΎΠΏΠΎΠ΄ΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ².
Π¦Π΅Π»Π΅Π²Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°: Microsoft Windows 7/10. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ: Visual Studio 2013 ΠΈ 2019.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° curllib:
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ curl Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Microsoft Windows 10, ΡΡΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ
- Π‘ΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ Visual Studio 2013 (Boost.Beast ΡΡΠ΅Π±ΡΠ΅Ρ Visaul Studio 2015 ΠΈ Π²ΡΡΠ΅)
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ: HTTP/2, HTTP/3
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ (easy), ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ Π°ΡΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ (multi), ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½Π°Ρ (multi)
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ IPv6
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (API) - ΡΠ·ΡΠΊ Π‘ΠΈ. Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π‘++ ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΡΡΠΈΠ»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½Π°Ρ
- ΠΠΎΠ΄Π΅Π»Ρ Easy, Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΡ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡ Π² ΠΌΠ΅ΠΆΠΏΠΎΡΠΎΡΠ½ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, ΡΡΠΎ ΡΡ ΡΠ΄ΡΠ°Π΅Ρ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
- Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ - ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π½Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠ·ΡΠΊ ΠΎΠΊΠΎΠ»ΠΎ 100 ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
Update 2024 Π³ΠΎΠ΄Π°: Π² ΡΠΈΡΠ»ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΊΡΠΎΠΌΠ΅ curllib ΠΈ boost.beast, ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ POCO C++ Libraries. ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅Π½ΡΡΠΈΡΠ½ΠΎΠΉ. ΠΡΠΎΠΌΠ΅ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π΄Π°ΠΏΡΠ΅ΡΠΎΠ² ΠΊ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ Π‘Π£ΠΠ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ: ODBC, MySQL, SQLite.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° curllib Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΎΡ zlib ΠΈ openSSL.
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ curllib.lib ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΡΠ°ΠΉΠ»Π΅ "\winbuild\BUILD.WINDOWS.txt" ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΠ΅ΠΊΡΡΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΠΈ. ΠΠ°Π³ΡΡΠ·ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°.
ΠΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ openSSL ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ ΠΈΠ· ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΡ: git clone git://git.openssl.org/openssl.git
, Π»ΠΈΠ±ΠΎ ΠΈΠ· Π·Π΅ΡΠΊΠ°Π»Π° Π½Π° GitHub: git clone https://github.com/openssl/openssl.git
ΠΠΊΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ zlib ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΊΠ°ΡΠ΅Π½Ρ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΡ GitHub ΠΎΡ Madler - Mark Adler - ΡΠΎΠ°Π²ΡΠΎΡ zlib.
Π ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ°, Π² Π·Π°Π΄Π°ΡΠΈ ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΎΠ΄ΡΡ:
- Π΅Π΄ΠΈΠ½Π°Ρ ΡΠΎΡΠΊΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΡΡΠ°ΡΠΈΠΊΠΎΠΌ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π·Π»ΠΎΠ²ΡΠ΅Π΄ΠΎΠ² ΠΈ Π²ΠΈΡΡΡΠΎΠ²
- ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ http-ΡΡΠ°ΡΠΈΠΊΠ°
- Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π·Π°ΠΏΡΠ΅ΡΡΠ½Π½ΡΠΌ ΠΈ ΡΠ°Π·Π²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ°ΠΉΡΠ°ΠΌ
- ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌΠΈ
ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΠΎΡΡΠΈ Π² 100% ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠ΅Π±ΡΠ΅Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π 2024 Π³ΠΎΠ΄Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° Π±ΡΠ»ΠΈ ΠΌΠ°ΡΡΠΎΠ²ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Ρ Ρ Active Directory, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ½ΠΈΠ·ΠΈΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°ΡΠΎΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΡΡΠΎΡΠΎΠ½Π½ΡΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌ. ΠΠ»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ - ΠΎΠ½ΠΈ Π±ΡΠ΄ΡΡ "ΠΏΠΎΠ΄ΡΡΠ½ΡΡΡ" Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. ΠΠ°ΠΆΠ½ΡΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ° ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠΎΠ±ΠΎΡΠ½ΡΠΉ ΡΡΡΠ΅ΠΊΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° - ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ ΠΈ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ TLS. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΡΠ°ΡΠ·Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ TLS 1.3, Π½ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ TLS 1.1., ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° TLS 1.1 Π±ΡΠ»Π° Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π°.
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ curllib ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Visual Studio Tools. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ±ΠΎΡΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ, ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ. ΠΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΡΡ ΡΡΡΠΎΠΊΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΆΠ°Π² ΠΊΠ½ΠΎΠΏΠΊΡ "Π‘ΡΠ°ΡΡ" -> "Visual Studio 2013" -> "Visual Studio Tools" ΠΈ Π²ΡΠ±ΡΠ°Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠΊΡΠΈΠΏΡ. ΠΠ»Ρ Visual Studio 2013 ΠΈ x86 (32-Π±ΠΈΡΠ°) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΡΠΎΠΊΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat"" x86
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Visual Studio 2019 Π΄Π»Ρ native-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° x64 ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
Π‘Π±ΠΎΡΠΊΠ° curllib.lib Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Microsoft Windows ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ "\winbuild". ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ "BUILD.WINDOWS.txt". Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅ deps, Π½Π°Ρ ΠΎΠ΄ΡΡΠ΅ΠΉΡΡ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΡΡΠΎΠ²Π½Π΅, ΡΡΠΎ ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ curl:
somedirectory\
|_curl-src
| |_winbuild
|
|_deps
|_ lib
|_ include
|_ bin
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠΎΠ³ΠΎΠ΅ - ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΠΈ openssl ΠΈ zlib ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠ±ΠΎΡΠΊΠΈ - ΡΠ°ΠΉΠ» "zlib.h" Π½Π΅ Π±ΡΠ» Π½Π°ΠΉΠ΄Π΅Π½. Π‘Π°ΠΌΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠ°ΠΏΠΎΠΊ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ, ΡΡΠΎ ΠΎΠ±Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄ΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ±ΡΠ°Π½Ρ.
ΠΠ°ΠΌΠ΅ΡΠΊΠΈ ΠΎ ΡΠ±ΠΎΡΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ openSSL ΠΏΠΎΠ΄ Windows ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°ΠΉΠ»Π΅ "NOTES.WIN". Π’Π°ΠΊΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π½Π° Wiki
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Perl, Ρ.ΠΊ. Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠΊΡΠΈΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Perl-ΡΠΊΡΠΈΠΏΡΠ°. Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ openSSL ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Strawberry Perl, Π½ΠΎ ΡΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ gcc. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ActiveState Perl, ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Enterprise-ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΊΡ Π½Π° Π½ΠΎΠ²ΠΎΡΡΠΈ.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Π±ΡΠ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Strawberry Perl.
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ Perl, ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Netwide Assembler - ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Assembler-Π° Π΄Π»Ρ x86/x64. ΠΠ»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΎΡ NASM Ρ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΡΠΊΠΈΠΌΠΈ ΠΏΡΠΈΠ²Π΅Π»Π΅Π³ΠΈΡΠΌΠΈ. 32-Π±ΠΈΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΏΠ°ΠΏΠΊΡ "c:\Program Files (x86)\NASM"
ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ %PATH% ΠΏΡΡΡ ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ NASM. ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ NASM Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΠΈΡΡ
ΠΎΠ΄Π½ΡΡ
ΡΠ΅ΠΊΡΡΠ°Ρ
Π½Π° GitHub. Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΡΡ ΠΊ NASM ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ: set PATH=%PATH%;"c:\Program Files (x86)\NASM
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΊΡΠΈΠΏΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ: perl Configure VC-WIN64A
(Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ 64-Π±ΠΈΡΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ) ΠΈ perl Configure VC-WIN32
(Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ 32-Π±ΠΈΡΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ). Π§ΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ no-shared
ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ±ΡΠ°ΡΡ DEBUG-Π²Π΅ΡΡΠΈΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡ --debug
. ΠΠ»Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»ΡΡ no-tests
Π΄Π»Ρ ΠΎΡΠΊΠ°Π·Π°ΡΡ ΠΎΡ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠΈΠ»ΠΈΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
Π£ΡΠΈΠ»ΠΈΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠ»ΡΡΠ΅ΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ threads/no-threads, zlib ΠΈ zlib-dynamic. ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ ΡΠ»Π°Π³ no-zlib. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ»Π°Π³Π° zlib, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ»Π°Π³ΠΈ: --with-zlib-include=[path to zlib headers] --with-zlib-lib=[path to zlib static library]
Π¦Π΅Π½Π½ΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ zlib - Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΆΠ°ΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ , ΡΡΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΡΠ°ΡΠΈΠΊ Π² 2-3 ΡΠ°Π·Π°.
Π£ΡΠΏΠ΅ΡΠ½ΠΎΡΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ:
**********************************************************************
*** ***
*** OpenSSL has been successfully configured ***
*** ***
Π‘Π±ΠΎΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ nmake
. ΠΡΠΎΡΠ΅ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΌΠΈΠ½ΡΡ Π½Π° Intel Core i5 3xxx.
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ, ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ nmake test
, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ unit-ΡΠ΅ΡΡΡ. ΠΠΎΠΌΠ°Π½Π΄Π° nmake install
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² openSSL (Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΠ²Π½ΡΡ
ΡΡΠΈΠ»ΠΈΡ) Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅.
ΠΠ° Π΄ΠΈΡΠΊΠ΅ "e" Π±ΡΠ»Π° ΡΠΎΠ·Π΄Π°Π½Π° ΠΏΠ°ΠΏΠΊΠ° "e:\curlsrc", Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ·Π΄Π°Π½Ρ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ "curl" ΠΈ "deps".
ΠΠ»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΠ΄ Microsoft Windows ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ solution ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ \zlib\contrib\vstudio
. ΠΠΎΡΡΡΠΏΠ½Ρ solution Π΄Π»Ρ Visual Studio 2008-2015. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠΎΠ±ΡΠ°ΡΡ solution \zlib\contrib\vstudio\vc12\zlibvc.sln
ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ:
1> crc32.c
1>..\..\..\crc32.c(1089): error C2708: 'crc32_combine64' : actual parameters length in bytes differs from previous call or reference
1> ..\..\..\crc32.c(1072) : see declaration of 'crc32_combine64'
1>..\..\..\crc32.c(1106): error C2708: 'crc32_combine_gen64' : actual parameters length in bytes differs from previous call or reference
1> ..\..\..\crc32.c(1093) : see declaration of 'crc32_combine_gen64'
1>..\..\..\crc32.c(1111): error C2373: 'crc32_combine_op' : redefinition; different type modifiers
1> e:\sources\curlbuild\zlib\zlib.h(1768) : see declaration of 'crc32_combine_op'
Π Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ zlib ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΠΎΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Ρ ΡΠ΅ΡΡΡΡΠ°
ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠΏΠΎΡΠΎΠ± ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎ ΡΠ±ΠΎΡΠΊΠΎΠΉ - ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π°Π²ΡΡΡΠ°Π»ΠΈΠΉΡΠ° ΠΠ΅Π»ΡΠ²ΠΈΠ½Π° ΠΠΈ. Π’Π°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ Multithreading ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Visual Studio 2013 ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ solution \zlib-win-build\build-VS2013-MT
Π‘Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² libz ΠΈ libz-static ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΠΠ΅Π»ΡΠ²ΠΈΠ½Π° ΠΠΈ Π±ΡΠ»Π° ΡΡΠΏΠ΅ΡΠ½Π°. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ Π±ΡΠ»ΠΈ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΏΠ°ΠΏΠΊΠΈ 'deps/lib' ΠΈ 'deps/include' ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
ΠΠ»Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ Curl Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» zlibstat.lib Π² zlib_a.lib.
Update 2023 October: Π΄Π»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ (ΡΠΌ. ΠΊΠ»ΡΡΠΈ ASMV ΠΈ ASMINF). ΠΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΡΠ±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² ΡΠ°ΠΌΠΊΠ°Ρ solution-Π° ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ±ΠΎΡΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ boost Ρ ΠΈΠ½ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ zlib Π±Π΅Π· Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΠΉ ΡΠ°ΠΉΠ»Ρ, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ, ΡΡΠΎ ΠΏΡΠΈ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°Π²ΠΊΠ°ΠΌΠΈ. ΠΠ° ΡΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ zlib ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ - Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΠΌΡ Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡ.
Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅ openSSL:
git clone https://github.com/openssl/openssl.git
git checkout openssl-3.0
cd openssl
"c:\Program Files (x86)\NASM\nasmpath.bat"
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
perl Configure VC-WIN32 no-shared no-tests
nmake
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½Π° ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½Π°Ρ, Π° Π½Π΅ developer-ΡΠ±ΠΎΡΠΊΠ°, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°: git branch
ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠ°ΡΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ 5-10 ΠΌΠΈΠ½ΡΡ, Π° ΡΠ±ΠΎΡΠΊΠ° openSSL Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΌΠΈΠ½ΡΡ.
ΠΠΎΠΌΠ°Π½Π΄Π° ΡΠ±ΠΎΡΠΊΠ° DEBUG-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
perl Configure VC-WIN32 no-shared no-tests --debug
Π‘Π»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΠΊΡΠΈΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ Π±ΡΠ» ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ, ΡΠΎ ΡΠ±ΠΎΡΠΊΠ° ΡΠ°Π·Π²Π°Π»ΠΈΠ²Π°Π»Π°ΡΡ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ:
perl Configure VC-WIN32 no-shared no-tests zlib --with-zlib-include=e:/curlsrc/deps/include --with-zlib-lib=e:/curlsrc/deps/lib
ΠΡΠ²ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°:
cmd /C ""link" /nologo /debug /dll /nologo /debug @C:\Users\M2DFC~1.ROZ\AppData\Local\Temp\nm6D48.tmp || (DEL /Q legacy.* providers\legacy.* & EXIT 1)"
LINK : fatal error LNK1104: cannot open file 'e:\curlsrc\deps\lib.obj'
ΠΠ΅ ΡΠ΄Π°Π΅ΡΡΡ Π½Π°ΠΉΡΠΈ e:\curlsrc\openssl\legacy.*
NMAKE : fatal error U1077: 'cmd' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\nmake.exe"' : return code '0x2'
Stop.
ΠΡΠΈ ΡΡΠΎΠΌ, ΡΠ°ΠΉΠ»Ρ libcrypto.lib ΠΈ libssl.lib Π±ΡΠ»ΠΈ ΡΠΎΠ±ΡΠ°Π½Ρ ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅ e:\curlsrc\openssl
.
ΠΠ΄Π½Π°ΠΊΠΎ, Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΠΈΡΠ°ΡΡ openssl Π±Π΅Π· zlib.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΡΠ΅ Π² Π³Π»Π°Π²Π½ΠΎΠΌ ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
Π€Π°ΠΉΠ»Ρ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ΅:
- libcrypto.lib
- libssl.lib
- libcrypto-3.dll
- libssl-3.dll
Π€Π°ΠΉΠ»Ρ ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ΅:
- libcrypto_static.lib
- libssl_static.lib
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΠ°ΠΏΠΊΡ "lib" Π²Π½ΡΡΡΠΈ ΠΏΠ°ΠΏΠΊΠΈ "openssl". ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΌ, Ρ.ΠΊ. ΡΠΊΡΠΈΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ libcurl Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΠ»Ρ Π² ΠΏΠ°ΠΏΠΊΠ΅, ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ SSL_PATH ΠΈ Π΅ΡΠ»ΠΈ ΡΠ°ΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΉΠ»Π° "libssl.lib", ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ Π΅ΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΡ Π½Π΅ Ρ Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ openssl (libcrypto.lib, libssl.lib), Π° Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Π²Π΅ΡΡΠΈΠΉ 1.0.2 ΠΈ Π½ΠΈΠΆΠ΅ (libeay32.lib, ssleay32.lib). ΠΠ»Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠΊΡΠΈΠΏΡ ΡΠ±ΠΎΡΠΊΠΈ "MakefileBuild.vc" ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΠΎΡ ΡΠ°ΠΊΡΡ ΡΡΡΠΎΠΊΡ:
!IF "$(WITH_SSL)"=="dll" || "$(WITH_SSL)"=="static"
!IF EXISTS("$(SSL_LIB_DIR)\libssl.lib")
SSL_LIBS = libssl.lib libcrypto.lib
!ELSE
SSL_LIBS = libeay32.lib ssleay32.lib
!ENDIF
Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΏΠ°ΠΏΠΊΠ° include Π² openSSL ΡΠΆΠ΅ Π΅ΡΡΡ.
ΠΡΡ
ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ Π±ΡΠ»ΠΈ Π·Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ git clone https://github.com/curl/curl
ΠΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ±ΠΎΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ buildconf.bat. Π ΡΠΈΡΠ»Π΅ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠ°ΠΉΠ» curl\src\tool_hugehelp.c, Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ±ΠΎΡΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΉ.
Π‘Π±ΠΎΡΠΊΠ° curllib.lib ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ "\winbuild" ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
nmake /f Makefile.vc mode=static DEBUG=no WITH_ZLIB=static ZLIB_PATH=e:\curlsrc\deps WITH_SSL=static SSL_PATH=e:\curlsrc\openssl ENABLE_SSPI=yes ENABLE_IPV6=no ENABLE_IDN=no ENABLE_WINSSL=yes
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ "mode" ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ (dll, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠ°). Π€Π»Π°Π³ "DEBUG" ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ (Debug/Release). ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ WITH_ZLIB ΠΈ ZLIB_PATH ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ Zlib ΠΈ ΠΏΡΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌ. Π ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ WITH_SSL ΠΈ SSL_PATH - Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ openSSL ΠΈ ΠΏΡΡΡ ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°ΠΌ.
SSPI ΡΡΠΎ Security Support Provider Interface, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Microsoft Windows, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°Π΄Π°ΡΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅, ΠΏΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌ NTLM, Kerberos. Π§Π°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° Π² ΡΠ΅ΡΡ ΡΠ΅ΡΠ΅Π· Proxy-ΡΠ΅ΡΠ²Π΅ΡΠ°. Π£ΠΊΠ°Π·Π°ΡΡ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SSPI ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠ»Π°Π³Π° ENABLE_SSPI. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΡΠΎΡ ΡΠ»Π°Π³ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Schannel (ΠΈΠ· Windows SSPI), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠΈΠ²Π½ΠΎΠΉ SSL Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π² Windows. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, openSSL ΡΠ°ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ SSL backend Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
Curl ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ IPv4, Π½ΠΎ ΠΈ ΠΏΠΎ IPv6, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΎ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΠ»Π°Π³Π° ENABLE_IPV6.
*ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΠΎΠΏΡΠΈΡ ENABLE_WINSSL ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΎΡΠ·ΡΠ²Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ², ΠΏΡΠΈ https-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ, Π΅ΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π³Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π² yes.
Π€Π»Π°Π³ ENABLE_IDN ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ IDN - international domain names, Ρ.Π΅. ΠΈΠΌΡΠ½ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ .
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ENABLE_SSPI, ENABLE_IPV6 ΠΈ ENABLE_WINSSL, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π² yes - ΡΡΠΎΡ ΡΠ°ΠΊΡΠΎΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ±ΠΎΡΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΠΏΠ°ΠΏΠΊΠ΅: \curl\builds.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΡΠΈ ΠΊ include-ΡΠ°ΠΉΠ»Π°ΠΌ:
Π ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ curllib.lib Π±ΡΠ»Π° ΡΠΎΠ±ΡΠ°Π½Π° ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ CURL_STATICLIB:
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΡΠΈ ΠΊ Π²ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ:
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (libcurl_a.lib;libcrypto.lib;libssl.lib;zlib_a.lib;crypt32.lib;Wldap32.lib;ws2_32.lib):
ΠΠ°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ curllib.lib Π±ΡΠ»Π° ΡΠΎΠ±ΡΠ°Π½Π° ΠΊΠ°ΠΊ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ define CURL_STATICLIB.
Π‘ΠΎΡΡΠ°Π² Π»ΠΈΠ½ΠΊΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°ΠΊΠΈΠΌ:
- \curl\libcurl.lib - ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² (HTTP/HTTPS/FTP ΠΈ Ρ.Π΄.)
- \zlib\zlib.lib - ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°/ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π°ΡΡ ΠΈΠ²ΠΎΠ²
- \openssl\libcrypto.lib, \openssl\libssl.lib - ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ²
- ws2_32.lib - TCP/IP
- crypt32.lib - Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΌ Windows
- Wldap32.lib - LDAP API, Π΄ΠΎΠΌΠ΅Π½Π½Π°Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°)
Π Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ c ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠ΅ΠΉ ΠΎΡ Peter Rekdal Sunde: ΠΎΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ wsock32.lib, Π½ΠΎ Π½Π΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ crypt32.lib.
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΊΡΠΈΠΏΡΠ° ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Windows.
ΠΠΎΡ ΠΎΠΆΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠ±ΠΎΡΠΊΠ΅ Curl ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π» Peter Rekdal Sunde.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ² ΡΠ΅ΡΠ²Π΅ΡΠ° Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ curllib, boost.beast, Android-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ C#-ΠΊΠΎΠ΄Π΅.
ΠΠ»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΡ badssl.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° IIS Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π² ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ PKI.
ΠΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ° Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠΎΡΡ Π΄Π΅Π»Π° Ρ HTTP/3 Π² ΡURL Π½Π° ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ 2024 Π³ΠΎΠ΄Π° by Bright_Translate.