
パッケージマネージャーからNettleライブラリをインストールしましたlibnettle7、libhogweed5、イラクサ箱、 そしてネトル-dev、Nettle 3.5.1 をベースにしているようです。私は Ubuntu 20.04 を使用しています。その後、AES と SHA アルゴリズムを使用して 2 つのプログラムを作成することができました。これらは問題なく動作したので、ヘッダー パスが正しいことがわかりました。
しかし、コンパイラ エラーが発生しずに 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 関数をインストールして呼び出すにはどうすればよいでしょうか?