secp256k1 сборка библиотеки для C++

Название говорит само за себя. Как мне скомпилировать(использовать) secp256k1 для использования в личном проекте. Я никогда раньше не компилировал библиотеки и искал какие-то рекомендации. Я использую Windows 11 MicrosoftVisualStudio и не пытался скомпилировать эту библиотеку, только перетащил загруженный репозиторий GitHub. ищу рекомендации о том, как скомпилировать эту библиотеку.

Библиотека: https://github.com/bitcoin-core/secp256k1.

Большое спасибо


Ответы (2 шт):

Автор решения: Lith

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

→ Ссылка
Автор решения: Matvj

Все программы, которые вам понадобятся для решения проблемы:

  1. git для клонирования репозитория ( https://git-scm.com/downloads).

  2. CMake как система сборки ( https://cmake.org/download/).

  3. Любой компилятор (в моём случае это Visual Studio 22).

Это все программы, дальше следуйте этому пошаговому руководству:

  1. Скопируйте код из репозиторий, с помощью команды git clone https://github.com/bitcoin-core/secp256k1.git.

  2. Далее перейдите в каталог с исходным кодом.

  3. Далее, чтоб не засорять исходный каталог создайте папку build с помощью команды mkdir build.

  4. Далее надо собрать код: cmake -G "Имя компилятора*" -A x64 -S . -B build.

  5. Теперь в папке build будет собран исходный код, всё что вам остаётся скомпилировать его с помощью вашего компилятора.


Имя компилятора* - в моём случае это Visual Studio 17 2022.

→ Ссылка