Неопределенная ссылка с правильно связанной библиотекой

У меня странная проблема с библиотекой безопасности 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) можно ссылаться из кода, но он просто не будет компилироваться из-за неопределенных ссылок.

0

Решение

Какой config.h вы использовали при сборке (посмотрите на configs/ папка)?
Удостовериться MBEDTLS_CMAC_C определяется при сборке mbedtls, по умолчанию он не определяется (на дату публикации).

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]