Linux系统调用+交叉编译

Linux syscall + cross compilation

我必须使用来自自定义 Linux 内核的一些系统调用。该项目在主机系统上交叉编译,然后在目标板上 运行。问题是——主机系统没有实现这些系统调用。我有编译错误:

error: 'BSP_SYS_read_new_data' was not declared in this scope syscall(BSP_SYS_read_new_data, LEFT, m_buffer.get(), m_buffer_size);

我可以使用类似的东西:

#define BSP_SYS_read_new_data <xxx>

哪里来自 syscall.tbl 来自目标系统内核源代码。 我走对了?

系统调用头文件是通过 运行在内核源代码 .tbl 上运行 grep 脚本生成的。如果您没有头文件,您可以 运行 自己编写脚本。如果您有适用于您的目标系统的头文件,您需要以某种方式安排这些头文件优先用于此构建而不是您的构建主机的副本。从理论上讲,您应该将所有 /usr/include/x86_64-linux-gnu (或您的主机使用的任何内容)替换为您的目标版本,这应该是 1 个构建路径条目。