最近我开始探索生成的代码如何使用C++运行库。
主要是出于好奇,但我也希望评估开发启动C++内核所需的最小必要工作量。
因此,我开始实现自己的运行库,但遇到了一些小问题。
使用以下命令编译:
手动使用“ld”链接目标文件时,我没有警告,但二进制文件仍会引发“分段错误”。
我想我正在失落某些东西。可能是在调用“main”之前和之后必须完成的某些事情,就像系统C库中的“__libc_start_main”一样。
此外,如果有人对我应该阅读的有关此主题的网站、文档或书籍有任何建议,我将非常感激。
谢谢,
帕特里克
int main(int argc, char **argv)
{
return 0;
}
使用以下命令编译:
会出现以下警告:$ g++ -ffreestanding -nostdlib -fno-builtin -fno-rtti -fno-exceptions -c main.cpp
然后当我尝试执行生成的二进制文件时,会出现“Segmentation fault”错误。我已经尝试编译“main.cpp”和一个ASM文件。/usr/bin/ld: 警告: 找不到入口符号 _start;默认为 00000000080480b8
[global _start]
[extern main]
_start:
call main
手动使用“ld”链接目标文件时,我没有警告,但二进制文件仍会引发“分段错误”。
我想我正在失落某些东西。可能是在调用“main”之前和之后必须完成的某些事情,就像系统C库中的“__libc_start_main”一样。
此外,如果有人对我应该阅读的有关此主题的网站、文档或书籍有任何建议,我将非常感激。
谢谢,
帕特里克