为我的操作系统移植NewLib:一些问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为我的操作系统移植NewLib:一些问题相关的知识,希望对你有一定的参考价值。

我正在尝试为我的操作系统移植NewLib(我正在关注本教程:http://wiki.osdev.org/Porting_Newlib),我有一些问题。

  • 一旦LibGloss完成并编译,我何时必须使用已创建的libnosys.a?是在我编译main.c的时候吗? mipsel-uknown-elf-gcc main.c -Llibnosys.a`
  • 我的crt0.c完成了。我必须“将它作为第一个对象链接”。我怎样才能做到这一点?这是这样的吗? mipsel-uknown-elf-ld crt0.o main.o

谢谢你的回答!

答案

链接作为第一个对象可能正常工作,就像你正在显示,但文档确实提到使用链接器脚本并添加crt0.o作为STARTUP() - 我不太熟悉链接器脚本,但你可以找到默认链接器脚本并可能创建它/调整它:

链接脚本的语法:http://wiki.osdev.org/Linker_Scripts

http://sourceware.org/binutils/docs-2.19/ld/Scripts.html#Scripts

The linker always uses a linker script. If you do not supply one yourself, the linker
will use a default script that is compiled into the linker executable. You can use the 
`--verbose' command line option to display the default linker script. Certain command
line options, such as `-r' or `-N', will affect the default linker script.

对于总是必须成为链接一部分的其他系统库,可能也是如此。

可以在命令行中添加all,但最后有点乏味。

你问的问题或者是什么,你得到任何错误或错误的结果吗?

以上是关于为我的操作系统移植NewLib:一些问题的主要内容,如果未能解决你的问题,请参考以下文章

从源代码编译 cygwin1.dll

一个const引入的优化问题

如何使用 viewpager 和片段为我的 ListView 设置适配器

如何在 Vs Code 中更改默认自动选择的用户片段行为

如何使用片段反向移植?

如何使用QEMU运行Newlib应用程序?