我必须使用自定义 Linux 内核中的一些系统调用。该项目在主机系统上交叉编译,然后在目标板上运行。问题是 - 主机系统没有实现这些系统调用。我有编译错误:
错误:在此范围系统调用中未声明“BSP_SYS_read_new_data”(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 个构建路径条目。
关于c++ - Linux系统调用+交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48327437/