好久没有写博客了,主要是工作太杂了,很多东西内耗精力,这不,又出现一个内核问题,在LTP Linux Test Project 工具的时候,发现add-key 出现了问题。然后决定试一下这个syscall。
代码如下:
int main(int argc, char *argv[]) {
key_serial_t key;
if (argc != 4) {
fprintf(stderr, "Usage: %s type description payload\n",argv[0]);
exit(EXIT_FAILURE);
}
key = add_key(argv[1], argv[2], argv[3], strlen(argv[3]), KEY_SPEC_SESSION_KEYRING);
if (key == -1) {
perror("add_key");
exit(EXIT_FAILURE);
}
printf("Key ID is %lx\n", (long) key);
exit(EXIT_SUCCESS);
}
然后:
gcc add_key.c -o add_key
发现报错:
fatal error: keyutils.h: No such file or directory
#include <keyutils.h>
原来是内核没有,安装工具libkeyutils-dev、keyutils
然后还是有错:
undefined reference to `add_key'
肯定是没有找到库,需要编译的时候加参数,比如-lpthread,这下可为难了,什么参数啊,全网找个边也没有,后来在一堆错误里,找到了这个:
gcc add_key.c -o add_key -lkeyutils
写下来,让大家少走弯路吧。