0

我刚刚实现了一个“伪”设备驱动程序并想对其进行测试。作为测试,我能做的只是:

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

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

你能给一个起点吗?我应该如何编译测试程序?

ps 测试程序很简单,上面的错误不是程序的bug引起的。pps 为了编译模块,我已经准备好了 Makefile,所以很容易 :)

提前致谢。

编辑:主机和 UML 内核的版本相同 2.6.35

编辑:我相信我需要显示内核源目录,加上一些编译器选项,还有类似 ARCH=um?

编辑:目前我正在编译没有任何选项。gcc test.c. 甚至“Hello world”程序也不能在 UML 上运行。也许我必须更改 UML 编译的某些内容?

4

2 回答 2

1

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

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

于 2010-12-27T19:20:49.013 回答
-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);
于 2010-12-26T17:07:27.793 回答