+ -
当前位置:首页 → 问答吧 → 自己编写一个程序编译进内核,要修改makefile文件吗?

自己编写一个程序编译进内核,要修改makefile文件吗?

时间:2011-09-11

来源:互联网

写一个自己的套接字,将C程序文件放在内核代码文件中。

然后make编译,结果老出错。


我想问一下,像我这样把自己写的C文件编译进内核

要不要修改makefile文件,或者.config文件呢?

作者: abc78400123   发布时间: 2011-09-11

听楼主意思,是写一个应用层的程序,但又放到内核中,这样是行不通的。

如果是应用层程序,不用理会内核,直接按普通的程序编写、编译即可,这种格式的Makefile网上有例子。

如果是内核层的,那应该说是驱动了,同样不用修改Makefile,而是自己创建一个适用于内核的Makefile。

关于Makefile例子,可以到www.latelee.org上找找。

作者: subfate   发布时间: 2011-09-11

这时陈浩的跟我一起写makefile。

正如前面所说的,如果一个工程有3个头文件,和8个C文件,我们为了完成前面所述的那三个规则,我们的Makefile应该是下面的这个样子的。

  edit : main.o kbd.o command.o display.o /
  insert.o search.o files.o utils.o
  cc -o edit main.o kbd.o command.o display.o /
  insert.o search.o files.o utils.o

  main.o : main.c defs.h
  cc -c main.c
  kbd.o : kbd.c defs.h command.h
  cc -c kbd.c
  command.o : command.c defs.h command.h
  cc -c command.c
……

我想问一下
  edit : main.o kbd.o command.o display.o /
  insert.o search.o files.o utils.o
  cc -o edit main.o kbd.o command.o display.o /
  insert.o search.o files.o utils.o
中的命令:
cc -o edit main.o kbd.o command.o display.o /
  insert.o search.o files.o utils.o

这个语句怎么理解呢?!

我自己写了两个测试程序,test.c,test1.c
然后,gcc -c test.c test1.c 生成了test.o test1.o两个.o文件

接着,按照上面的格式:
cc -o test.o test1.o 

结果什么文件都没生成啊?


作者: abc78400123   发布时间: 2011-09-11

引用 1 楼 subfate 的回复:

听楼主意思,是写一个应用层的程序,但又放到内核中,这样是行不通的。

如果是应用层程序,不用理会内核,直接按普通的程序编写、编译即可,这种格式的Makefile网上有例子。

如果是内核层的,那应该说是驱动了,同样不用修改Makefile,而是自己创建一个适用于内核的Makefile。

关于Makefile例子,可以到www.latelee.org上找找。

哦,呵呵
我不是写应用程序,也不是写驱动,

我是为传输层设置一个新的套接字,跟SOCK_STREAM,SOCK_DGRAM 是同级别的。
比如名字叫SOCK_MYUDP。为此,我必须写一些发送和接受数据包的函数,myudp_sendmsg,myudp_recvmsg

我把两个函数写在MyUDP.c中。然后把MyUDP.c放在 linux-2.6.8.1/net 目录下。

编译的时候虽然出错,但显示MyUDP.c经过编译了。
编译截图可见我发的这个帖子
http://topic.csdn.net/u/20110908/11/84f9b8d9-355a-4d4a-924d-37f116bd10e2.html




作者: abc78400123   发布时间: 2011-09-11