2015-02-06 94 views
0

我有一个用户空间程序(Capstone)。我想在FreeBSD内核中使用它。我相信他们中的大多数具有相同的函数名称,语义和参数(在FreeBSD中,内核printf也被命名为printf)。首先我将它建成libcapstone.a库,并将它与我的程序连接起来。由于Linux用户空间和FreeBSD内核的包含文件不同,因此库无法找到像sprintfmemsetvsnprintf这样的符号。我如何使这些符号(从FreeBSD内核)可见到libcapstone.a如何将内核函数链接到用户空间程序?

如果像Linux的用户空间的源代码<sys/systm.h>直接包括头文件,这些错误会像undefined type u_int or u_char,即使我添加到-D_BSD_SOURCECFLAGS

此外,任何其他更好的方法来做到这一点?

+0

首先你说你想在用户空间程序中使用内核函数。然后你谈论在内核模块中使用用户空间函数的听起来像什么。这是什么? – 2015-02-06 05:45:06

+0

将用户空间程序放入内核中,作为库。对困惑感到抱歉。 – WindChaser 2015-02-06 13:50:51

回答

0

您还需要;看看内核手册页,例如“man 9 printf”。他们列出了必需的包含在顶部。

但是,请注意,您正在努力尝试真的难。一些基本功能(如printf)可能在那里;其他则完全不同(例如malloc(9)),而大多数POSIX API根本就不存在。您将无法使用开放式(2),套接字(2)或分叉(2)。

相关问题