编译用户模式Linux的程序

时间:2010-12-26 15:16:38

标签: c linux linux-kernel linux-device-driver user-mode-linux

我刚刚实施了一个"伪"设备驱动程序,并希望测试它。我可以做什么作为测试:

echo "something"> /dev/mydev
cat /dev/mydev

我的驱动程序支持更高级的功能,我实现了一个测试程序来测试这些工作程序。但是我无法在UML上运行它(错误:浮点异常)。我相信有一个特殊的"为UML编译用户程序的方法?

请你为此提出一个起点?我该如何编译测试程序?

P.S。测试程序非常简单,上面的错误不是由程序中的错误引起的。 p.p.s.为了编译模块我准备好了Makefile,所以很容易:)

提前致谢。

编辑:主机和UML内核的版本都是2.6.35

编辑:我认为我需要显示内核源代码目录,加上一些编译器选项,还有ARCH = um?

编辑:目前我正在编译,没有任何选项。 gcc test.c.甚至是" Hello world"程序不适用于UML。也许我会在UML编译上改变一些东西?

2 个答案:

答案 0 :(得分:1)

找到问题的解决方案(感谢我的同学和教授):

编译环境的glibc版本应该与UML匹配。所以编译 --static选项解决了这个问题。

答案 1 :(得分:-1)

如果您想从/向您的设备读/写,您必须实施,然后在您的程序中使用,至少系统调用open()read()write()close()一样,就像Linux上的任何其他设备一样。对于您给出的示例,您的程序将是这样的(语法可能包含一些错误):

char* string = "something";
char* result = (char*)malloc(sizeof(char) * strlen(string) + 1);

int fd = open("/dev/mydev", O_RDWR);

write(fd, "something", strlen(string));

read(fd, result, strlen(string));
printf("result = %s\n", result);

close(fd);