Модули mbed tls NET и TIMING недоступны

Я скомпилировал mbedtls для платы K64F с ОС ARM Mbed. Я пытаюсь запустить примеры из файлов 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'

Как я могу определить эти вызовы, чтобы заставить их работать?


person jordi    schedule 06.04.2017    source источник


Ответы (1)


Уже ответили здесь: https://tls.mbed.org/discussions/platform-specific/compiling-mbeddtls-on-k64f:

Привет, Джорди!
dtls_client.c и dtls_server.c — это примеры приложений, которые поставляются как часть репозитория mbed TLS git.
Обратите внимание, что mbed-OS поставляется с собственным каталогом функций mbed TLS. Чтобы протестировать функцию TLS, вы можете использовать клиентское приложение TLS. и измените его для соответствия протоколу DTLS, а также для сервера. Вы также можете просмотреть этот пример для справки о том, как настроить клиент и сервер dtls.
Надеюсь, это поможет
член команды mbed TLS
Рон

person Jan Jongboom    schedule 12.04.2017