secp256k1 сборка библиотеки для C++
Название говорит само за себя. Как мне скомпилировать(использовать) secp256k1 для использования в личном проекте. Я никогда раньше не компилировал библиотеки и искал какие-то рекомендации. Я использую Windows 11 MicrosoftVisualStudio и не пытался скомпилировать эту библиотеку, только перетащил загруженный репозиторий GitHub. ищу рекомендации о том, как скомпилировать эту библиотеку.
Библиотека: https://github.com/bitcoin-core/secp256k1.
Большое спасибо
Ответы (2 шт):
https://vcpkg.io/en/package/secp256k1
В случае если установлен vcpkg. То можно прописать vcpkg install secp256k1 и оно будет собирать данную библиотеку.
Если есть необходимость собрать прямо с исходников то нужно установить Visual Studio 2022 и CMake v3.21+
В консоли разработчика для Visual Studio 2022 перейдите к распакованными исходникам. Пропишите в корне две команды.
cmake -G "Visual Studio 17 2022" -A x64 -S . -B build
cmake --build build --config RelWithDebInfo
Готово.
-- The C compiler identification is MSVC 19.38.33030.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: E:/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.38.33030/bin/Hostx64/x64/cl.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Performing Test HAVE_X86_64_ASM
-- Performing Test HAVE_X86_64_ASM - Failed
-- Could NOT find Valgrind (missing: Valgrind_INCLUDE_DIR Valgrind_WORKS)
-- Performing Test C_SUPPORTS__W3
-- Performing Test C_SUPPORTS__W3 - Success
-- Performing Test C_SUPPORTS__WD4146
-- Performing Test C_SUPPORTS__WD4146 - Success
-- Performing Test C_SUPPORTS__WD4244
-- Performing Test C_SUPPORTS__WD4244 - Success
-- Performing Test C_SUPPORTS__WD4267
-- Performing Test C_SUPPORTS__WD4267 - Success
secp256k1 configure summary
===========================
Build artifacts:
library type ........................ Shared
Optional modules:
ECDH ................................ ON
ECDSA pubkey recovery ............... OFF
extrakeys ........................... ON
schnorrsig .......................... ON
ElligatorSwift ...................... ON
Parameters:
ecmult window size .................. 15
ecmult gen table size ............... 22 KiB
Optional features:
assembly ............................ OFF
external callbacks .................. OFF
Optional binaries:
benchmark ........................... ON
noverify_tests ...................... ON
tests ............................... ON
exhaustive tests .................... ON
ctime_tests ......................... OFF
examples ............................ OFF
Cross compiling ....................... FALSE
Valgrind .............................. OFF
Preprocessor defined macros ........... ENABLE_MODULE_ELLSWIFT=1 ENABLE_MODULE_SCHNORRSIG=1 ENABLE_MODULE_EXTRAKEYS=1 ENABLE_MODULE_ECDH=1 ECMULT_WINDOW_SIZE=15 COMB_BLOCKS=11 COMB_TEETH=6 _CRT_SECURE_NO_WARNINGS
C compiler ............................ E:/Microsoft Visual Studio/2022/Preview/VC/Tools/MSVC/14.38.33030/bin/Hostx64/x64/cl.exe
CFLAGS ................................ /DWIN32 /D_WINDOWS
Compile options ....................... /W3 /wd4146 /wd4244 /wd4267
Supported configurations .............. RelWithDebInfo;Release;Debug;MinSizeRel;Coverage
RelWithDebInfo configuration:
- CFLAGS ............................. /Zi /O2 /Ob1
- LDFLAGS for executables ............ /debug /INCREMENTAL
- LDFLAGS for shared libraries ....... /debug /INCREMENTAL
Debug configuration:
- CFLAGS ............................. /Zi /Ob0 /Od /RTC1
- LDFLAGS for executables ............ /debug /INCREMENTAL
- LDFLAGS for shared libraries ....... /debug /INCREMENTAL
-- Configuring done (38.1s)
-- Generating done (0.3s)
-- Build files have been written to: E:/Downloads/secp256k1-0.5.0/build
Версия MSBuild 17.8.0-preview-23431-02+3c910ba83 для .NET Framework
1>Checking Build System
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
precomputed_ecmult.c
precomputed_ecmult_gen.c
Generating Code...
secp256k1_precomputed.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\secp256k1_precomputed.dir\RelWithDebInfo\secp
256k1_precomputed.lib
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
secp256k1.c
Creating library E:/Downloads/secp256k1-0.5.0/build/src/RelWithDebInfo/libsecp256k1.lib and object E:/Downloads/se
cp256k1-0.5.0/build/src/RelWithDebInfo/libsecp256k1.exp
secp256k1.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\RelWithDebInfo\libsecp256k1-2.dll
'pwsh.exe' is not recognized as an internal or external command,
operable program or batch file.
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
bench.c
bench.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\RelWithDebInfo\bench.exe
'pwsh.exe' is not recognized as an internal or external command,
operable program or batch file.
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
bench_ecmult.c
bench_ecmult.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\RelWithDebInfo\bench_ecmult.exe
'pwsh.exe' is not recognized as an internal or external command,
operable program or batch file.
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
bench_internal.c
bench_internal.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\RelWithDebInfo\bench_internal.exe
'pwsh.exe' is not recognized as an internal or external command,
operable program or batch file.
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
tests_exhaustive.c
exhaustive_tests.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\RelWithDebInfo\exhaustive_tests.exe
'pwsh.exe' is not recognized as an internal or external command,
operable program or batch file.
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
tests.c
noverify_tests.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\RelWithDebInfo\noverify_tests.exe
'pwsh.exe' is not recognized as an internal or external command,
operable program or batch file.
Building Custom Rule E:/Downloads/secp256k1-0.5.0/src/CMakeLists.txt
tests.c
tests.vcxproj -> E:\Downloads\secp256k1-0.5.0\build\src\RelWithDebInfo\tests.exe
'pwsh.exe' is not recognized as an internal or external command,
operable program or batch file.
Building Custom Rule E:/Downloads/secp256k1-0.5.0/CMakeLists.txt
В папке secp256k1-0.5.0\build\src\RelWithDebInfo будет храниться libsecp256k1-2.dll libsecp256k1.exp libsecp256k1.lib
Все программы, которые вам понадобятся для решения проблемы:
git для клонирования репозитория ( https://git-scm.com/downloads).
CMake как система сборки ( https://cmake.org/download/).
Любой компилятор (в моём случае это Visual Studio 22).
Это все программы, дальше следуйте этому пошаговому руководству:
Скопируйте код из репозиторий, с помощью команды git clone https://github.com/bitcoin-core/secp256k1.git.
Далее перейдите в каталог с исходным кодом.
Далее, чтоб не засорять исходный каталог создайте папку build с помощью команды mkdir build.
Далее надо собрать код: cmake -G "Имя компилятора*" -A x64 -S . -B build.
Теперь в папке build будет собран исходный код, всё что вам остаётся скомпилировать его с помощью вашего компилятора.
Имя компилятора* - в моём случае это Visual Studio 17 2022.