У меня странная проблема с библиотекой безопасности mbedtls. Я скачал самую новую версию (ссылка для скачивания .tar.gz) на моем компьютере с Ubuntu, затем скомпилировал его и скопировал файлы заголовков в /usr/include
и файлы общей библиотеки в /usr/lib
,
Когда я компилирую свою C ++ программу, которая вызывает функцию mbedtls_cipher_cmac_starts
из mbedtls / cmac.h я получаю неопределенную ошибку ссылки Security.cpp:599: undefined reference to 'mbedtls_cipher_cmac_starts'
, Тем не менее, я включил и связал библиотеки правильно (по крайней мере, я так думаю, это не проблема порядка, верно?). Проблема, кажется, в самой библиотеке mbedtls, как когда я nm -D libmbedcrypto.so
Я не могу найти нужную функцию. Я также проверил libmbedtls.so, но тоже не повезло.
0000000000020206 T mbedtls_cipher_auth_decrypt
0000000000020128 T mbedtls_cipher_auth_encrypt
000000000001ff17 T mbedtls_cipher_check_tag
0000000000020022 T mbedtls_cipher_crypt
0000000000264960 D mbedtls_cipher_definitions
000000000001fb49 T mbedtls_cipher_finish
Хотя, похоже, он находится в make-файле библиотеки при компиляции библиотеки. Также странно, что на файл заголовка (cmac.h) можно ссылаться из кода, но он просто не будет компилироваться из-за неопределенных ссылок.
Какой config.h вы использовали при сборке (посмотрите на configs/
папка)?
Удостовериться MBEDTLS_CMAC_C
определяется при сборке mbedtls, по умолчанию он не определяется (на дату публикации).
Других решений пока нет …