我从包管理器安装了 Nettle 库libnettle7,libhogweed5,荨麻箱, 和荨麻-dev,似乎基于 Nettle 3.5.1。我使用的是 Ubuntu 20.04。在此之后,我能够使用 AES 和 SHA 算法编写两个程序,它们运行良好,所以我知道标头路径是正确的。
但是,我无法调用 RSA 函数,因为会出现编译器错误。
$ make rsa_test
/usr/bin/ld: /tmp/ccaqGeCe.o: in function `main':
rsa_test.cc:(.text+0x36): undefined reference to `nettle_rsa_public_key_init'
/usr/bin/ld: rsa_test.cc:(.text+0x42): undefined reference to `nettle_rsa_private_key_init'
collect2: error: ld returned 1 exit status
make: *** [Makefile:9: rsa_test] Error 1
以下是产生错误的最少代码:
#include <stdlib.h>
#include <stdio.h>
#include <nettle/rsa.h>
using namespace std;
int main(int argc, char **argv) {
struct rsa_public_key pub;
struct rsa_private_key priv;
rsa_public_key_init(&pub);
rsa_private_key_init(&priv);
}
文件 rsa.h 位于 /usr/include/nettle 中,包含函数 rsa_public_key_init 和 rsa_public_key_init。如何安装 RSA 函数并调用它们?