c编译ko
Ⅰ linux驱动开发: UBUNTU下,比如我写了个.C 驱动文件。 之后我要把它放在哪里,我才能得到.ko文件,详细些
两种方法:
1,直接添加进内核。
a, 比如进入drivers/char/目录,把xxx.c文件拷贝到该目录
b, 修改drivers/char/Kconfig文件,自定义仿照其他选项,添加自己的选项XXX。
c, 修改drivers/char/Makefile文件,添加obj-$(CONFIG_XXX) += xxx.o
d, 进入内核根目录,make menuconfig,进入device drivers->character devices在这里面找到XXX选项,配置成“M”,也就是模块编译,会生成xxx.ko
2,随便建一个目录,写Makefile,这个Makefile里面,要指定内核源码根目录,并调用内核源码的Makefile,来编译当前目录的文件,类似一下格式,可在网上找一个Makefile来修改:
CFILES = xxx.c
DRIVER_NAME = xxxx
KSRC := /home/linux/linux-2.6.xxx
TARGET = $(DRIVER_NAME).ko
obj-m += $(DRIVER_NAME).o
$(DRIVER_NAME)-objs := $(CFILES:.c=.o)
default:
$(MAKE) -C $(KSRC) SUBDIRS=$(shell pwd) moles
Ⅱ 在linux中,.cpp文件可以编译成.ko文件不是不是只有.c文件可以编译成.ko文件
只能用c语言,不能用c++, 文件内容跟 cpp 后缀没什么关系,c语言写的也可以用cpp,虽然一般cpp都是表示c++啦
Ⅲ linux内核编译 .c如何生成.o文件
gcc -Wall adc.c -o adc.o
或者在makefile中写下:
adc.o:
gcc -Wall adc.c -o adc.o
然后make,注意adc.o:下面的空格必须用Tab键
Ⅳ linux内核模块编译-通过Makefile重命名.ko文件名和模块名
假设模块的源文件为hello.c,源码如下:
使用该文件编译内核模块。
正常情况下,Makefile文件内容如下:
执行 make 命令,生成hello.ko文件。
执行 sudo insmod hello.ko 命令,安装该模块。
执行 lsmod 命令,查看安装的模块。就会看到第一行的就是hello模块。
但是,如果想自定义模块名称为 xmole ,而不是默认的 hello ,如何实现呢?方法如下:
在Makefile中重命名obj-m并将obj-m的依赖关系设置为原始模块(hello)
修改后的Makefile文件内容如下:
将obj-m设置为 xmole .o,并使 xmole .o依赖于 hello .o.
执行 make 命令后,生成 xmole .ko, 而不是 hello .ko,
安装命令: sudo insmod xmole.ko
查看命令: lsmod ,就会看到被安装名为 xmole 的模块。
Ⅳ 关于Linux中的so文件
你知道windows下的dll文件吗???
其实和linux下的so文件是一回事,,so文件也是编译好了的二进制的链接库文件,,,
一般来说都是c或c++编译出来的,,java的话通常是用的字节码,也就是class文件。。
你自己写一个 helloworld的c程序,然后在命令行下用编译器编译gcc -c helloworld.c -o hello.o这样编译出来的结果就是那样的东西了。。这样的文件是不能直接运行的。。
Ⅵ gcc 怎么生成.ko 模块文件
http://..com/question/81844701.html
我回答的一个相似问题
Ⅶ linux文件ub,zimage,ko,o,s,c都是做什么用的求详细点解说,初学者
ub:uboot??嵌入式linux,Bootloader的一个版本;
Zimage:一般是嵌入式linux,内核文件格式;
KO:linux设备驱动程序,以.ko结尾
o:c程序编译后的目标文件
s:汇编程序源文件后缀
c:C语言源程序后缀,