作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
拜托,有人知道如何将引导与内核链接起来吗?例如我有这个启动代码:
[BITS 16]
[ORG 0x7C00]
[global start]
[extern _main]
start:
call _main
cli
hlt
这是我的 C++ 文件:
#include <iostream>
#include <string>
int main()
{
std::cout << "Hello World" << std::endl;
return 0;
}
现在我将把.cpp 文件编译成.o 文件,将.asm 文件编译成.o 文件。但是我现在如何将这些文件链接到 kernel.bin 呢?它有一些代码吗?这段代码有效吗?请帮助我。
最佳答案
首先,您不能使用 C/C++ 标准库,因为在业余操作系统中,它不存在*。
其次,您的 C++ 代码似乎是 32 位格式,而您的汇编代码是 16 位格式。这些不能链接,除非都是 16 岁或都是 32 岁。
我建议查看 OSDev Wiki (user786653 也发布了该信息)...它有许多有用的资源可以帮助您开始编写操作系统。
如果您真的想使用 16 位汇编从头开始,并且希望能够使用 32 位 C++ 代码,则必须执行以下步骤:
(注意,要做到这一点,您必须具备高水平的 C/C++ 知识,并且至少具备一定的汇编知识)
*如果您在自己的库中编程,请忽略第一条语句。
希望这对您有所帮助!
-阿德里安
关于c++ - 链接到内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6844788/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!