2010-08-08 10 views
7

Sto provando a eseguire il porting di NewLib per il mio sistema operativo (sto seguendo questo tutorial: http://wiki.osdev.org/Porting_Newlib) e ho alcune domande.Porting NewLib per il mio sistema operativo: alcune domande

  • volta LibGloss è fatto e compilati, quando esattamente dovrò usare il libnosys.a che sono stati creati? È quando compilerò il mio main.c?

    mipsel-uknown-elf-gcc main.c -Llibnosys.a` 
    
  • Il mio crt0.c è terminato. E devo "collegarlo come il primo oggetto". Come lo posso fare? È qualcosa di simile?

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

Grazie per le vostre risposte!

risposta

1

Il collegamento come il primo oggetto potrebbe funzionare bene come si sta visualizzando, ma i documenti menzionano l'uso di uno script linker e l'aggiunta di crt0.o come STARTUP() - Non ho molta familiarità con gli script di linker, ma tu riesce a trovare lo script predefinito del linker ed eventualmente crearla/regolarlo:

Sintassi dello script di collegamento: 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. 

lo stesso si può probabilmente essere fatto con le altre librerie di sistema th devi sempre essere parte del collegamento.

Va bene aggiungere tutti sulla riga di comando, ma un po 'noioso alla fine.

Si verificano errori o risultati errati da quando si sta chiedendo o cosa?