Android 如何添加secp256k1?

Android 如何添加secp256k1?,android,cmake,android-ndk,Android,Cmake,Android Ndk,我需要包括libsecp256k1.a 我遵照以下指示: 构建.a文件的步骤 nm libsecp256k1.a | less 显示.a文件的内容 我将库添加到libs下正确的eabi文件夹中 在CMakeLists.txt文件中添加了声明 cmake_minimum_required(VERSION 3.4.1) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17") se

我需要包括libsecp256k1.a

我遵照以下指示: 构建.a文件的步骤

nm libsecp256k1.a | less
显示.a文件的内容

我将库添加到libs下正确的eabi文件夹中

在CMakeLists.txt文件中添加了声明

cmake_minimum_required(VERSION 3.4.1)

set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++17")
set(import-lib-location ${CMAKE_CURRENT_SOURCE_DIR}/../../../libs)
include_directories(include/)
include_directories(secp_include/)

file(GLOB_RECURSE COSIGNER_SOURCE "${CMAKE_CURRENT_SOURCE_DIR}/cosigner/*.cpp" "${CMAKE_CURRENT_SOURCE_DIR}/cosigner/*.c")
file(GLOB_RECURSE COSIGNER_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/cosigner/*.h")

set (COSIGNER_INCLUDE_DIRS "")
foreach (_headerFile ${COSIGNER_HEADERS})
    get_filename_component(_dir ${_headerFile} PATH)
    list (APPEND COSIGNER_INCLUDE_DIRS ${_dir})
endforeach()

list(REMOVE_DUPLICATES COSIGNER_INCLUDE_DIRS)

add_library(secp256k1 STATIC IMPORTED )
set_target_properties(secp256k1
        PROPERTIES IMPORTED_LOCATION
        ${import-lib-location}/${ANDROID_ABI}/libsecp256k1.a)

add_library (COSIGNERExe SHARED
        ${COSIGNER_SOURCE}
        ${COSIGNER_WRAPPER_SOURCE}
        )
target_include_directories(COSIGNERExe PRIVATE ${COSIGNER_INCLUDE_DIRS})

add_library(crypto STATIC IMPORTED )
set_target_properties(crypto
        PROPERTIES IMPORTED_LOCATION ${import-lib-location}/${ANDROID_ABI}/libcrypto.a)

add_library(ssl STATIC IMPORTED )
set_target_properties(ssl
        PROPERTIES IMPORTED_LOCATION
        ${import-lib-location}/${ANDROID_ABI}/libssl.a)

add_library( # Sets the name of the library.
        wrapper

        # Sets the library as a shared library.
        SHARED

        # Provides a relative path to your source file(s).
        wrapper.cpp)

target_link_libraries(
        COSIGNERExe
        secp256k1
        ssl
        crypto
)
target_link_libraries( # Specifies the target library.
        wrapper

        ssl
        crypto
        secp256k1
        COSIGNERExe
        )

find_library(zlib-lib z)
set_property(TARGET ssl APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${zlib-lib})
但我仍然得到以下错误:

我错过了什么

编辑: 完整生成输出:

    Build multiple targets COSIGNERExe_armeabi-v7a mpc_wrapper_armeabi-v7a
ninja: Entering directory `wrapper/.cxx/cmake/debug/armeabi-v7a'
[1/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/secp256k1_sign_context.cpp.o
[2/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/logging/logging_t.cpp.o
[3/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/secret_service.cpp.o
[4/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/cosigner.c.o
[5/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/commitments/commitments.c.o
[6/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/MtA/MtA.c.o
[7/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/blockchain/mpc/hd_derive.cpp.o
[8/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr.c.o
[9/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr2.c.o
[10/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/shamir_secret_sharing/verifiable_secret_sharing.c.o
cosigner/crypto/shamir_secret_sharing/verifiable_secret_sharing.c:157:12: warning: 'BN_is_prime_ex' is deprecated [-Wdeprecated-declarations]
    assert(BN_is_prime_ex(bn_prime, 1000, ctx, NULL));
           ^
include/openssl/bn.h:358:1: note: 'BN_is_prime_ex' has been explicitly marked deprecated here
DEPRECATEDIN_3_0(int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb))
^
include/openssl/macros.h:136:38: note: expanded from macro 'DEPRECATEDIN_3_0'
#   define DEPRECATEDIN_3_0(f)       DECLARE_DEPRECATED(f)
                                     ^
include/openssl/macros.h:34:56: note: expanded from macro 'DECLARE_DEPRECATED'
#    define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                       ^
1 warning generated.
[11/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/secp256k1_algebra/secp256k1_algebra.c.o
cosigner/crypto/secp256k1_algebra/secp256k1_algebra.c:399:10: warning: 'EC_POINT_get_affine_coordinates_GFp' is deprecated [-Wdeprecated-declarations]
    if (!EC_POINT_get_affine_coordinates_GFp(ctx->secp256k1, p_p, X, NULL, ctx->bn_ctx))
         ^
include/openssl/ec.h:580:1: note: 'EC_POINT_get_affine_coordinates_GFp' has been explicitly marked deprecated here
DEPRECATEDIN_3_0(int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
^
include/openssl/macros.h:136:38: note: expanded from macro 'DEPRECATEDIN_3_0'
#   define DEPRECATEDIN_3_0(f)       DECLARE_DEPRECATED(f)
                                     ^
include/openssl/macros.h:34:56: note: expanded from macro 'DECLARE_DEPRECATED'
#    define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                       ^
1 warning generated.
[12/20] Building C object CMakeFiles/COSIGNERExe.dir/wrapper/x509.c.o
[13/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/paillier/paillier.c.o
[14/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/utils/guid.cpp.o
In file included from cosigner/utils/guid.cpp:1:
cosigner/utils/guid.h:45:46: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
        static_assert(sizeof(guid_data) == 16);
                                             ^
                                             , ""
1 warning generated.
[15/20] Building CXX object CMakeFiles/COSIGNERExe.dir/wrapper/android_cpp_helper_methods.cpp.o
wrapper/android_cpp_helper_methods.cpp:8:20: warning: unused function 'jstring2string' [-Wunused-function]
static std::string jstring2string(JNIEnv *env, jstring jStr) {
                   ^
1 warning generated.
[16/20] Building CXX object CMakeFiles/wrapper.dir/wrapper.cpp.o
wrapper.cpp:298:66: warning: unused variable 'service' [-Wunused-variable]
    cosigner_service::cosigner_service_impl *service = new ccosigner_service::cosigner_service_impl(
                                                                 ^
In file included from wrapper.cpp:8:
wrapper/android_cpp_helper_methods.h:14:20: warning: unused function 'jstring2string' [-Wunused-function]
static std::string jstring2string(JNIEnv *env, jobject self, jstring stringToConvert);
                   ^
2 warnings generated.
[17/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/cosigner_service_impl.cpp.o
In file included from cosigner/cosigner_service_impl.cpp:11:
cosigner/utils/guid.h:45:46: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
        static_assert(sizeof(guid_data) == 16);
                                             ^
                                             , ""
cosigner/cosigner_service_impl.cpp:227:113: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
            static_assert(sizeof(common::cosigner::player_commitments) == 2*sizeof(common::cosigner::commitment));
                                                                                                                ^
                                                                                                                , ""
cosigner/cosigner_service_impl.cpp:228:99: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
            static_assert(sizeof(common::cosigner::commitment) == sizeof(commitments_commitment_t));
                                                                                                  ^
                                                                                                  , ""
cosigner/cosigner_service_impl.cpp:601:99: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
            static_assert(sizeof(common::cosigner::commitment) == sizeof(commitments_commitment_t));
                                                                                                  ^
                                                                                                  , ""
4 warnings generated.
[18/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/base_cosigner_service.cpp.o
cosigner/base_cosigner_service.cpp:1294:64: warning: size argument in 'memcmp' call is a comparison [-Wmemsize-comparison]
                    if (memcmp(U, T, sizeof(secp256k1_point_t) != 0))
                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
cosigner/base_cosigner_service.cpp:1294:25: note: did you mean to compare the result of 'memcmp' instead?
                    if (memcmp(U, T, sizeof(secp256k1_point_t) != 0))
                        ^                                          ~
                                                              )
cosigner/base_cosigner_service.cpp:1294:38: note: explicitly cast the argument to size_t to silence this warning
                    if (memcmp(U, T, sizeof(secp256k1_point_t) != 0))
                                     ^
                                     (size_t)(                     )
cosigner/base_cosigner_service.cpp:1893:87: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
                    static_assert(sizeof(secp256k1_point) == sizeof(secp256k1_point_t));
                                                                                      ^
                                                                                      , ""
cosigner/base_cosigner_service.cpp:1952:87: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
                    static_assert(sizeof(secp256k1_point) == sizeof(secp256k1_point_t));
                                                                                      ^
                                                                                      , ""
3 warnings generated.
[19/20] Linking CXX shared library wrapper/build/intermediates/cmake/debug/obj/armeabi-v7a/libCOSIGNERExe.so
FAILED: wrapper/build/intermediates/cmake/debug/obj/armeabi-v7a/libCOSIGNERExe.so 
: && /Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi27 --gcc-toolchain=/Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security   -std=gnu++11 -Wall -Wno-deprecated-declarations -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -undefined dynamic_lookup -Wl,-soname,libCOSIGNERExe.so -o wrapper/build/intermediates/cmake/debug/obj/armeabi-v7a/libCOSIGNERExe.so CMakeFiles/COSIGNERExe.dir/cosigner/base_cosigner_service.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/blockchain/mpc/hd_derive.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/cosigner_service_impl.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/logging/logging_t.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/secp256k1_sign_context.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/secret_service.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/utils/guid.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/cosigner.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/MtA/MtA.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/commitments/commitments.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/paillier/paillier.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/secp256k1_algebra/secp256k1_algebra.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/shamir_secret_sharing/verifiable_secret_sharing.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr2.c.o CMakeFiles/COSIGNERExe.dir/wrapper/android_cpp_helper_methods.cpp.o CMakeFiles/COSIGNERExe.dir/wrapper/x509.c.o  ../../../libs/armeabi-v7a/libsecp256k1.a ../../../libs/armeabi-v7a/libssl.a ../../../libs/armeabi-v7a/libcrypto.a /Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a -latomic -lm && :
hd_derive.cpp:121: error: undefined reference to 'secp256k1_context_create'
hd_derive.cpp:126: error: undefined reference to 'secp256k1_context_destroy'
hd_derive.cpp:87: error: undefined reference to 'secp256k1_ec_pubkey_parse'
hd_derive.cpp:91: error: undefined reference to 'secp256k1_ec_pubkey_tweak_add'
hd_derive.cpp:95: error: undefined reference to 'secp256k1_ec_pubkey_serialize'
hd_derive.cpp:107: error: undefined reference to 'secp256k1_ec_privkey_tweak_add'
hd_derive.cpp:145: error: undefined reference to 'secp256k1_context_create'
hd_derive.cpp:153: error: undefined reference to 'secp256k1_context_destroy'
hd_derive.cpp:160: error: undefined reference to 'secp256k1_context_destroy'
hd_derive.cpp:183: error: undefined reference to 'secp256k1_context_create'
hd_derive.cpp:191: error: undefined reference to 'secp256k1_context_destroy'
cosigner/secp256k1_sign_context.cpp:16: error: undefined reference to 'secp256k1_context_create'
cosigner/cosigner.c:91: error: undefined reference to 'secp256k1_ec_seckey_verify'
cosigner/cosigner.c:97: error: undefined reference to 'secp256k1_ec_pubkey_create'
cosigner/cosigner.c:102: error: undefined reference to 'secp256k1_ec_pubkey_serialize'
cosigner/cosigner.c:150: error: undefined reference to 'secp256k1_ecdsa_sign'
cosigner/base_cosigner_service.cpp:2095: error: undefined reference to 'secp256k1_ec_seckey_verify'
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.

> Task :mpcwrapper:externalNativeBuildDebug FAILED
> Task :mpcwrapper:generateDebugRFile
> Task :biometric:generateDebugRFile

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':mpcwrapper:externalNativeBuildDebug'.
> Build command failed.
  Error while executing process /Users/lena/Library/Android/sdk/cmake/3.10.2.4988404/bin/ninja with arguments {-C wrapper/.cxx/cmake/debug/armeabi-v7a COSIGNERExe mpc_wrapper}
  ninja: Entering directory `wrapper/.cxx/cmake/debug/armeabi-v7a'
  [1/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/secp256k1_sign_context.cpp.o
  [2/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/logging/logging_t.cpp.o
  [3/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/secret_service.cpp.o
  [4/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/cosigner.c.o
  [5/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/commitments/commitments.c.o
  [6/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/MtA/MtA.c.o
  [7/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/blockchain/mpc/hd_derive.cpp.o
  [8/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr.c.o
  [9/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr2.c.o
  [10/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/shamir_secret_sharing/verifiable_secret_sharing.c.o
  cosigner/crypto/shamir_secret_sharing/verifiable_secret_sharing.c:157:12: warning: 'BN_is_prime_ex' is deprecated [-Wdeprecated-declarations]
      assert(BN_is_prime_ex(bn_prime, 1000, ctx, NULL));
             ^
  include/openssl/bn.h:358:1: note: 'BN_is_prime_ex' has been explicitly marked deprecated here
  DEPRECATEDIN_3_0(int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb))
  ^
  include/openssl/macros.h:136:38: note: expanded from macro 'DEPRECATEDIN_3_0'
  #   define DEPRECATEDIN_3_0(f)       DECLARE_DEPRECATED(f)
                                       ^
  include/openssl/macros.h:34:56: note: expanded from macro 'DECLARE_DEPRECATED'
  #    define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                         ^
  1 warning generated.
  [11/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/secp256k1_algebra/secp256k1_algebra.c.o
  cosigner/crypto/secp256k1_algebra/secp256k1_algebra.c:399:10: warning: 'EC_POINT_get_affine_coordinates_GFp' is deprecated [-Wdeprecated-declarations]
      if (!EC_POINT_get_affine_coordinates_GFp(ctx->secp256k1, p_p, X, NULL, ctx->bn_ctx))
           ^
  include/openssl/ec.h:580:1: note: 'EC_POINT_get_affine_coordinates_GFp' has been explicitly marked deprecated here
  DEPRECATEDIN_3_0(int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
  ^
  include/openssl/macros.h:136:38: note: expanded from macro 'DEPRECATEDIN_3_0'
  #   define DEPRECATEDIN_3_0(f)       DECLARE_DEPRECATED(f)
                                       ^
  include/openssl/macros.h:34:56: note: expanded from macro 'DECLARE_DEPRECATED'
  #    define DECLARE_DEPRECATED(f)    f __attribute__ ((deprecated));
                                                         ^
  1 warning generated.
  [12/20] Building C object CMakeFiles/COSIGNERExe.dir/wrapper/x509.c.o
  [13/20] Building C object CMakeFiles/COSIGNERExe.dir/cosigner/crypto/paillier/paillier.c.o
  [14/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/utils/guid.cpp.o
  In file included from cosigner/utils/guid.cpp:1:
  cosigner/utils/guid.h:45:46: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
          static_assert(sizeof(guid_data) == 16);
                                               ^
                                               , ""
  1 warning generated.
  [15/20] Building CXX object CMakeFiles/COSIGNERExe.dir/wrapper/android_cpp_helper_methods.cpp.o
  wrapper/android_cpp_helper_methods.cpp:8:20: warning: unused function 'jstring2string' [-Wunused-function]
  static std::string jstring2string(JNIEnv *env, jstring jStr) {
                     ^
  1 warning generated.
  [16/20] Building CXX object CMakeFiles/wrapper.dir/wrapper.cpp.o
  wrapper.cpp:298:66: warning: unused variable 'service' [-Wunused-variable]
      cosigner_service::cosigner_service_impl *service = new cosigner_service::cosigner_service_impl(
                                                                   ^
  In file included from wrapper.cpp:8:
  wrapper/android_cpp_helper_methods.h:14:20: warning: unused function 'jstring2string' [-Wunused-function]
  static std::string jstring2string(JNIEnv *env, jobject self, jstring stringToConvert);
                     ^
  2 warnings generated.
  [17/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/cosigner_service_impl.cpp.o
  In file included from cosigner/cosigner_service_impl.cpp:11:
  cosigner/utils/guid.h:45:46: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
          static_assert(sizeof(guid_data) == 16);
                                               ^
                                               , ""
  cosigner/cosigner_service_impl.cpp:227:113: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
              static_assert(sizeof(common::cosigner::player_commitments) == 2*sizeof(common::cosigner::commitment));
                                                                                                                  ^
                                                                                                                  , ""
  cosigner/cosigner_service_impl.cpp:228:99: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
              static_assert(sizeof(common::cosigner::commitment) == sizeof(commitments_commitment_t));
                                                                                                    ^
                                                                                                    , ""
  cosigner/cosigner_service_impl.cpp:601:99: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
              static_assert(sizeof(common::cosigner::commitment) == sizeof(commitments_commitment_t));
                                                                                                    ^
                                                                                                    , ""
  4 warnings generated.
  [18/20] Building CXX object CMakeFiles/COSIGNERExe.dir/cosigner/base_cosigner_service.cpp.o
  cosigner/base_cosigner_service.cpp:1294:64: warning: size argument in 'memcmp' call is a comparison [-Wmemsize-comparison]
                      if (memcmp(U, T, sizeof(secp256k1_point_t) != 0))
                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~
  cosigner/base_cosigner_service.cpp:1294:25: note: did you mean to compare the result of 'memcmp' instead?
                      if (memcmp(U, T, sizeof(secp256k1_point_t) != 0))
                          ^                                          ~
                                                                )
  cosigner/base_cosigner_service.cpp:1294:38: note: explicitly cast the argument to size_t to silence this warning
                      if (memcmp(U, T, sizeof(secp256k1_point_t) != 0))
                                       ^
                                       (size_t)(                     )
  cosigner/base_cosigner_service.cpp:1893:87: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
                      static_assert(sizeof(secp256k1_point) == sizeof(secp256k1_point_t));
                                                                                        ^
                                                                                        , ""
  cosigner/base_cosigner_service.cpp:1952:87: warning: static_assert with no message is a C++17 extension [-Wc++17-extensions]
                      static_assert(sizeof(secp256k1_point) == sizeof(secp256k1_point_t));
                                                                                        ^
                                                                                        , ""
  3 warnings generated.
  [19/20] Linking CXX shared library wrapper/build/intermediates/cmake/debug/obj/armeabi-v7a/libCOSIGNERExe.so
  FAILED: wrapper/build/intermediates/cmake/debug/obj/armeabi-v7a/libCOSIGNERExe.so 
  : && /Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++ --target=armv7-none-linux-androideabi27 --gcc-toolchain=/Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64 --sysroot=/Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fPIC -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -fno-addrsig -march=armv7-a -mthumb -Wa,--noexecstack -Wformat -Werror=format-security   -std=gnu++11 -Wall -Wno-deprecated-declarations -O0 -fno-limit-debug-info  -Wl,--exclude-libs,libgcc.a -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--exclude-libs,libunwind.a -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -shared -undefined dynamic_lookup -Wl,-soname,libCOSIGNERExe.so -o wrapper/build/intermediates/cmake/debug/obj/armeabi-v7a/libCOSIGNERExe.so CMakeFiles/COSIGNERExe.dir/cosigner/base_cosigner_service.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/blockchain/mpc/hd_derive.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/cosigner_service_impl.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/logging/logging_t.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/secp256k1_sign_context.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/secret_service.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/utils/guid.cpp.o CMakeFiles/COSIGNERExe.dir/cosigner/cosigner.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/MtA/MtA.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/commitments/commitments.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/paillier/paillier.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/secp256k1_algebra/secp256k1_algebra.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/shamir_secret_sharing/verifiable_secret_sharing.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr.c.o CMakeFiles/COSIGNERExe.dir/cosigner/crypto/zero_knowledge_proof/schnorr2.c.o CMakeFiles/COSIGNERExe.dir/wrapper/android_cpp_helper_methods.cpp.o CMakeFiles/COSIGNERExe.dir/wrapper/x509.c.o  ../../../libs/armeabi-v7a/libsecp256k1.a ../../../libs/armeabi-v7a/libssl.a ../../../libs/armeabi-v7a/libcrypto.a /Users/lena/Library/Android/sdk/ndk/20.1.5948944/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/arm-linux-androideabi/libz.a -latomic -lm && :
  hd_derive.cpp:121: error: undefined reference to 'secp256k1_context_create'
  hd_derive.cpp:126: error: undefined reference to 'secp256k1_context_destroy'
  hd_derive.cpp:87: error: undefined reference to 'secp256k1_ec_pubkey_parse'
  hd_derive.cpp:91: error: undefined reference to 'secp256k1_ec_pubkey_tweak_add'
  hd_derive.cpp:95: error: undefined reference to 'secp256k1_ec_pubkey_serialize'
  hd_derive.cpp:107: error: undefined reference to 'secp256k1_ec_privkey_tweak_add'
  hd_derive.cpp:145: error: undefined reference to 'secp256k1_context_create'
  hd_derive.cpp:153: error: undefined reference to 'secp256k1_context_destroy'
  hd_derive.cpp:160: error: undefined reference to 'secp256k1_context_destroy'
  hd_derive.cpp:183: error: undefined reference to 'secp256k1_context_create'
  hd_derive.cpp:191: error: undefined reference to 'secp256k1_context_destroy'
  cosigner/secp256k1_sign_context.cpp:16: error: undefined reference to 'secp256k1_context_create'
  cosigner/cosigner.c:91: error: undefined reference to 'secp256k1_ec_seckey_verify'
  cosigner/cosigner.c:97: error: undefined reference to 'secp256k1_ec_pubkey_create'
  cosigner/cosigner.c:102: error: undefined reference to 'secp256k1_ec_pubkey_serialize'
  cosigner/cosigner.c:150: error: undefined reference to 'secp256k1_ecdsa_sign'
  cosigner/base_cosigner_service.cpp:2095: error: undefined reference to 'secp256k1_ec_seckey_verify'
  clang++: error: linker command failed with exit code 1 (use -v to see invocation)
  ninja: build stopped: subcommand failed.

请,请以文本而不是图像的形式发布错误消息。此目录位置
${CMAKE\u CURRENT\u SOURCE\u DIR}/../../../libs
有效吗?图书馆真的存在于那里,还是其他地方?能否为您的构建提供
make VERBOSE=1
的输出(作为文本)。库存在于此。我附上了构建输出。你能确认
libs/armeabi-v7a/libsecp256k1.a
是为编译的,而
nm libs/armeabi-v7a/libsecp256k1.a | grep_context_create
是为secp256编译的,它最初是为mac而不是android编译的