2010-08-08 14 views
7

Estoy tratando de portar NewLib para mi sistema operativo (estoy siguiendo este tutorial: http://wiki.osdev.org/Porting_Newlib), y tengo algunas preguntas.Portando NewLib para mi sistema operativo: algunas preguntas

  • Una vez libgloss está hecho y compilado, cuándo exactamente voy a tener que usar el libnosys.a que se han creado? ¿Es cuando voy a compilar mi main.c?

    mipsel-uknown-elf-gcc main.c -Llibnosys.a` 
    
  • Mi crt0.c está hecho. Y tengo que "vincularlo como el primer objeto". ¿Cómo puedo hacer eso? ¿Es algo como esto?

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

Gracias por sus respuestas!

Respuesta

1

Vincular como el primer objeto podría funcionar como si estuviera mostrando, pero los documentos mencionan el uso de una secuencia de comandos del enlazador y agregar crt0.o como INICIAR() - No estoy muy familiarizado con las secuencias de comandos del enlazador, pero puede encontrar el script enlazador predeterminado y posiblemente crearlo/ajustarlo:

sintaxis de secuencia de comandos que une: 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. 

probablemente lo mismo se puede hacer con otras bibliotecas del sistema th siempre tiene que ser parte de la vinculación.

Está bien agregar todo en la línea de comandos, pero un poco tedioso al final.

¿Está recibiendo algún error o resultados incorrectos ya que está preguntando o qué?

Cuestiones relacionadas