使用gcc使用linux内核头文件编译用户空间应用程序

时间:2017-09-07 03:43:33

标签: c linux gcc

我有一个非常简单的c程序,我想用gcc编译,从linux内核头文件导入。

#include <stdio.h>
#include <stdlib.h>
#include <linux/random.h>

int main(){
    int rand;
    get_random_bytes(&rand,sizeof(rand));
    printf("%d",rand);
    return 0;
}

我尝试使用以下命令编译此程序:

gcc rand.c -D__KERNEL__ -isystem /lib/modules/`uname -r`/build/include

但是我得到了一堆错误(下面)。我错过了什么?:

/usr/src/kernels/4.9.8-201.fc25.x86_64/include/linux/linkage.h:7:25: fatal error: asm/linkage.h: No such file or directory
 #include <asm/linkage.h>

1 个答案:

答案 0 :(得分:1)

从一些快速的Google搜索中,似乎get_random_bytes可能是只能在内核中使用的私有函数。

您尝试使用getrandom怎么样?以下是getrandom的文档:

http://man7.org/linux/man-pages/man2/getrandom.2.html