c++ - Linux系统调用+交叉编译

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

我必须使用自定义 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/

相关文章:

c - 内核模块内存访问

c - vmalloc 和 kmalloc 有什么区别?

c++ - 创建 `container< container<Base>>`的STL容器

linux - 信号量值大于初始值

c++ - 在 C++ 中创建一个列表来保存对象

linux - 如何从ip中提取前2个数字

c++ - 线程处理 C++ linux OS

c++ - VideoCapture dosnt 从网络摄像头读取 openCV2.4.0 linux

c++ - 如何继承yyFlexLexer?

c++ - 从唯一指针到基类的派生类的 decltype