Портирование NewLib для моей ОС: некоторые вопросы

Я пытаюсь портировать NewLib для моей ОС (я следую этому руководству: http://wiki.osdev.org/Porting_Newlib ), и у меня есть несколько вопросов.

  • Как только LibGloss будет создан и скомпилирован, когда именно мне придется использовать созданный libnosys.a? Это когда я соберу свой main.c?

     mipsel-uknown-elf-gcc main.c -Llibnosys.a` и у меня есть несколько вопросов. Как только LibGloss будет создан и скомпилирован, когда именно мне придется ...  

    Я пытаюсь портировать NewLib для моей ОС (я следую этому руководству: http://wiki.osdev.org/Porting_Newlib ), и у меня есть несколько вопросов.

    • Как только LibGloss будет создан и скомпилирован, когда именно мне придется использовать созданный libnosys.a? Это когда я соберу свой main.c?

       mipsel-uknown-elf-gcc main.c -Llibnosys.a` и у меня есть несколько вопросов. Как только LibGloss будет создан и скомпилирован, когда именно мне придется ...  

      Я пытаюсь портировать NewLib для моей ОС (я следую этому руководству: http://wiki.osdev.org/Porting_Newlib ), и у меня есть несколько вопросов.

      • Как только LibGloss будет создан и скомпилирован, когда именно мне придется использовать созданный libnosys.a? Это когда я соберу свой main.c?

         mipsel-uknown-elf-gcc main.c -Llibnosys.a` с? 
        
        
         mipsel-uknown-elf-gcc main.c -Llibnosys.a` с? 
        
        
         mipsel-uknown-elf-gcc main.c -Llibnosys.a`
        
      • Мой crt0.c готов. И я должен «связать это как первый объект». Как я могу это сделать? Это как то так?

         mipsel-uknown-elf-ld crt0.o main.o
        

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

7
задан Sentos 1 March 2018 в 23:38
поделиться

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.

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

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

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

1
ответ дан 7 December 2019 в 20:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: