mbed tls NET和TIMING模块不可用

时间:2017-04-06 11:26:45

标签: arm mbed dtls mbedtls

我已经为使用ARM Mbed OS的K64F板编译了mbedtls。我正在尝试运行dtls_client.c和dtls_server.c中的示例。最初,在编译客户端时出现了这个错误:

"The NET and TIMING modules are not available for mbed OS - please use the network and timing functions provided by mbed OS"

我发现这与在config.h文件中激活这两行有关。

    #define MBEDTLS_NET_C
    #define MBEDTLS_TIMING_C

I commented them and the check that requires the values:

#if !defined(MBEDTLS_SSL_CLI_C) || !defined(MBEDTLS_SSL_PROTO_DTLS) ||    \
    !defined(MBEDTLS_NET_C)  || !defined(MBEDTLS_TIMING_C) ||             \
    !defined(MBEDTLS_ENTROPY_C) || !defined(MBEDTLS_CTR_DRBG_C) ||        \
    !defined(MBEDTLS_X509_CRT_PARSE_C) || !defined(MBEDTLS_RSA_C) ||      \
    !defined(MBEDTLS_CERTS_C) || !defined(MBEDTLS_PEM_PARSE_C)
int main( void )
{
    mbedtls_printf( "MBEDTLS_SSL_CLI_C and/or MBEDTLS_SSL_PROTO_DTLS and/or "
            "MBEDTLS_NET_C and/or MBEDTLS_TIMING_C and/or "
            "MBEDTLS_ENTROPY_C and/or MBEDTLS_CTR_DRBG_C and/or "
            "MBEDTLS_X509_CRT_PARSE_C and/or MBEDTLS_RSA_C and/or "
            "MBEDTLS_CERTS_C and/or MBEDTLS_PEM_PARSE_C not defined.\n" );
    return( 0 );
}

现在我看到我得到的编译错误与某些功能的重新定义有关:

main.cpp:(.text.startup.main+0x18): undefined reference to `mbedtls_net_init'
main.cpp:(.text.startup.main+0xce): undefined reference to `mbedtls_net_connect'
main.cpp:(.text.startup.main+0x2fc): undefined reference to `mbedtls_net_recv_timeout'
main.cpp:(.text.startup.main+0x300): undefined reference to `mbedtls_net_send'
main.cpp:(.text.startup.main+0x304): undefined reference to `mbedtls_net_recv'
main.cpp:(.text.startup.main+0x308): undefined reference to `mbedtls_timing_get_delay'
main.cpp:(.text.startup.main+0x30c): undefined reference to `mbedtls_timing_set_delay'
main.cpp:(.text.startup.main+0x35c): undefined reference to `mbedtls_net_free'

如何定义此调用以使其正常工作?

1 个答案:

答案 0 :(得分:1)

这里已经回答:https://tls.mbed.org/discussions/platform-specific/compiling-mbeddtls-on-k64f

  

嗨Jordi,
  dtls_client.cdtls_server.c是作为mbed TLS git存储库的一部分到达的示例应用程序   请注意,mbed-OS带有自己的mbed TLS功能目录。要测试TLS功能,您可以使用TLS client app并修改它以适应DTLS协议,也可以修改服务器。您还可以查看此示例,以获取有关如何配置dtls客户端和服务器的参考   我希望这有助于   mbed TLS团队成员
  罗恩