【发布时间】:2016-12-26 13:00:13
【问题描述】:
我有一个视频模块,我正在使用arm-eabi-gcc 交叉编译器进行编译。我使用以下命令编译
$ arm-eabi-gcc -O2 -DMODULE -D__KERNEL__ -W -Wall -isystem /lib/modules/uname -r/build/include panel-xxxxxxx.c.
我收到以下错误
In file included from /lib/modules/3.13.0-32-generic/build/include/linux/types.h:5:0,
from /lib/modules/3.13.0-32-generic/build/include/linux/list.h:4,
from /lib/modules/3.13.0-32-generic/build/include/linux/module.h:9,
from panel-gis317.c:17:
/lib/modules/3.13.0-32-generic/build/include/uapi/linux/types.h:4:23: fatal error: asm/types.h: No such file or directory
compilation terminated.
在google上搜索后,我发现我需要指定硬件架构,但我找不到在命令行上使用arch和gcc的正确用法。
谁能建议我在不使用Makefile的情况下在命令行上交叉编译给定.cfile(module)的标志
注意:我这样做是为了测试硬件上的.ko 模块的insmod。
顺便说一句,借助.o文件,我们可以知道哪个cross-compiler用于编译.c file
【问题讨论】:
-
-02应该是-O2 -
我对编译器命令行中的
uname -r部分感到困惑。这评估的是主机的内核版本,而不是目标的 - 在我看来是错误的。您需要主机上的目标内核包含文件并包含这些文件。
标签: c linux linux-kernel cross-compiling kernel-module