Linux系统调用+交叉编译

时间:2018-01-18 17:49:27

标签: c++ linux linux-kernel system-calls

我必须使用自定义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。 我正确的方式?

1 个答案:

答案 0 :(得分:1)

通过在内核源.tbl上运行grep脚本生成syscall头文件。如果您没有头文件,则可以自行运行脚本。如果您的目标系统具有相应的头文件,则需要以某种方式安排将这些头用于此构建,而不是构建主机的副本。从理论上讲,你应该将目标版本的/ usr / include / x86_64-linux-gnu(或者你的主机使用的任何东西)全部移植一下,该版本应该是1个构建路径条目。