0

我对 mbedtls 安全库有一个奇怪的问题。我已经在我的 Ubuntu 机器上下载了它的最新版本(下载 .tar.gz 的链接),然后编译它并将头文件复制到.tar.gz/usr/include并将共享库文件复制到/usr/lib.

当我编译mbedtls_cipher_cmac_starts从 mbedtls/cmac.h 调用函数的 C++ 程序时,我得到未定义的引用错误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

虽然在编译库时它似乎在库makefile中。此外,可以从代码中引用头文件(cmac.h)很奇怪,但由于未定义的引用,它不会编译。

4

1 回答 1

2

您在构建时使用了哪个 config.h(查看configs/文件夹)?确保MBEDTLS_CMAC_C在构建 mbedtls 时已定义,默认未定义它(截至本文发布之日)。

于 2017-07-25T12:37:47.960 回答