Портирование NewLib для моей ОС: некоторые вопросы - PullRequest
7 голосов
/ 08 августа 2010

Я пытаюсь портировать 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
    

Спасибо за ваши ответы!

1 Ответ

1 голос
/ 24 августа 2010

Связывание с первым объектом может работать так же хорошо, как вы отображаете, но в документах упоминается использование скрипта компоновщика и добавление 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.

То же самоевозможно, это можно сделать с другими системными библиотеками, которые всегда должны быть частью связи.

Хорошо добавлять все в командной строке, но в конце немного утомительно.

Выполучать какие-либо ошибки или неправильные результаты, так как вы спрашиваете или что?

...