Ver la versión completa : Ayuda con el Toolchain
Buenas!
He instalado el toolchain y al compilar un programa de tipo Hello World me da este error :
Assembler messages:
Fatal error: Invalid -march= option: `armv5te'
No se que hacer para solucionarlo ya que soy un Noob con el toolchain y despues de una sesion pruebas queria realizar ports de un par de juegos.
¿Qué toolchain? ¿La opción -march=armv5te de dónde sale/quién la pone?
El toolchain para compilar programas para Wiz (Openwiz). Y lo que le pongo es /opt/arm-openwiz-linux-gnu/bin/arm-openwiz-linux-gnu-gcc -o wizTest.gpe wizTest.c asi que no se de donde sale por eso preguntaba.
Pongo el codigo del programa por si sirve:
#include <stdio.h>
#include <stdlib.h>
int main(char ** argv, int argc)
{
printf("hello world\n");
return EXIT_SUCCESS;
}
No sé de dónde has sacado ese toolchain, pero no tiene las mismas rutas que el que uso yo. Cuidado, no quiere decir que ése no funcione, pero te puedo asegurar que he usado con éxito este: http://www.gp32x.com/board/index.php?/topic/48635-a-slightly-more-complete-toolchain-libs-for-linux-devs/page__p__740323__hl__toolchain__fromsearch__1&#entry740323
Instálalo exactamente como dicen porque parece que tiene paths configurados a piñón. También te recomiendo compilar en dos pasos y (quizás) con librerías estáticas:
$(GCC) -c hello.c
$(GCC) -static -o hello.gpe hello.o
Y finalmente, te recomiendo compilar siempre con un Makefile, porque son muchas opciones las que tienes que poner cada vez :)
Gracias por el link pero me sigue sin funcionar aunque con errores diferentes. Creo que no me he enterado de como se compila con el toolchain ese. ¿Te importaria explicarmelo?
La idea es la misma que con cualquier otro toolchain: utilizar un archivo Makefile con todas las opciones, que son muchísimas como para escribirlas cada vez a mano.
1.- Instála el toolchain como te dicen en el link. Pero igual, igual.
2.- Utiliza un Makefile como este (lo he sacado de Lemonboy). Si quieres añadir más archivos a tu proyecto, hazlo en la variable OBJS. Son archivos con el mismo nombre que tus .c, pero acabados en .o y separados por espacios. Por ejemplo, si tu proyecto tiene los archivos main.c y miscosas.c, haz OBJS=main.o miscosas.o. Cambia también la variable NAME para darle el nombre que quieras a tu programa final.
# A basic Makefile to compile for Wiz
OPEN2X = /opt/openwiz/toolchain/
CC=$(OPEN2X)/bin/arm-openwiz-linux-gnu-gcc
LD=$(CC)
NAME=wizTest
OBJS = wizTest.o
TARGET=$(NAME).gpe
DEFS=
INCS=-I. -I$(OPEN2X)/include
CFLAGS=-O3 -mcpu=arm926ej-s -ffast-math -fomit-frame-pointer
LDFLAGS=$(CFLAGS) -L$(OPEN2X)/lib
LIBS=-lSDL -lpng -lm -lz -lpthread -liconv
$(TARGET): $(OBJS)
$(LD) $(LDFLAGS) $(OBJS) -o $@ $(LIBS)
.c.o:
$(CC) $(CFLAGS) $(INCS) $(DEFS) -c $< -o $@
clean:
rm -f *.o *~
Este archivo Makefile lo guardas en el mismo directorio que tus archivos de código fuente, y compilas escribiendo "make". Por cierto, este Makefile ya incluye enlace con la librería SDL, que quizá no la uses ahora pero seguro que la usarás mañana :)
Muchisimas gracias por toda la ayuda :D. Ya lo tengo compilado y funcionando. Te debo una :brindis:
Otra cosa: no acabes tus programas con un "return 0" a menos que los lances desde la línea de comandos o utilices un script para lanzarlos. Para volver a cargar el menú desde dentro del programa, estos tienen que acabar ejecutando estas líneas:
chdir("/usr/gp2x");
if(execl("gp2xmenu","gp2xmenu",NULL)==-1){
printf("Error running the Gp2x menu");
exit(1);
}
Fíjate que no hay "return 0" al final, porque en realidad no debería volver nunca de la llamada a execl() (si vuelve es un error)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions Inc. All rights reserved.