在 C 中创建内核时,我可以使用 `strlen()`、`strcpy()`、`strrev()`、`strcmp()` 或 `strcat()` 吗?
Can I use `strlen()`, `strcpy()`, `strrev()`, `strcmp()` or `strcat()` when creating a kernel in C?
我正在尝试制作一个具有打印字符、绘图等功能的内核。这些功能稍后将与汇编链接。我想知道我是否仍然可以使用这些功能:
strlen()
strcpy()
strrev()
strcmp()
strcat()
无论如何,我从 osdev.org 中找到了这段代码,我将以此为基础构建它,它具有 strlen()
函数,尽管我找不到创建其他函数的方法如果这个问题我在标题中列出。
size_t strlen(const char* str)
{
size_t len = 0;
while (str[len])
len++;
return len;
}
这个库可以工作吗#include <linux/string.h>
?
<string.h>
库不能在内核中使用。
https://elixir.bootlin.com/linux/latest/source/include/linux/string.h#L48
查看 link,其中有一个 strcmp 函数和您需要的其他函数。
我是新手,所以我不是 100% 确定。如果我说错了请指正。
我在试验后发现,即使在用 C 语言制作内核时,您实际上也可以使用一些库,例如 stdint.h
和 stdbool.h
。虽然这可以做到,但我已经实现了我自己的上述功能版本...
我正在尝试制作一个具有打印字符、绘图等功能的内核。这些功能稍后将与汇编链接。我想知道我是否仍然可以使用这些功能:
strlen()
strcpy()
strrev()
strcmp()
strcat()
无论如何,我从 osdev.org 中找到了这段代码,我将以此为基础构建它,它具有 strlen()
函数,尽管我找不到创建其他函数的方法如果这个问题我在标题中列出。
size_t strlen(const char* str)
{
size_t len = 0;
while (str[len])
len++;
return len;
}
这个库可以工作吗#include <linux/string.h>
?
<string.h>
库不能在内核中使用。
https://elixir.bootlin.com/linux/latest/source/include/linux/string.h#L48
查看 link,其中有一个 strcmp 函数和您需要的其他函数。 我是新手,所以我不是 100% 确定。如果我说错了请指正。
我在试验后发现,即使在用 C 语言制作内核时,您实际上也可以使用一些库,例如 stdint.h
和 stdbool.h
。虽然这可以做到,但我已经实现了我自己的上述功能版本...