我对 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)很奇怪,但由于未定义的引用,它不会编译。