Портирование 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
    

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


person pimpampoum    schedule 08.08.2010    source источник


Ответы (1)


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

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

Можно добавить все в командной строке, но в конце концов это немного утомительно.

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

person nicomen    schedule 24.08.2010