Compiling for the NanoNote/de
From Qi-Hardware
Dies ist eine kleine Anleitung wie man für das NanoNote entwickelt. Der Beispiel-Code in C wurde auf dem Desktop geschrieben und für das NanoNote kompiliert.
- Folge den Anweisungen der Seite Building_Software_Image von git clone bis zu make. Es ist einfacher, als es aussieht, benötigt werden keine Root-Rechte und man muss nichts weitere installieren als die essientiellen Build-Tools auf dem Rechner. Die Zeit, die man für die Übersetzung benötigt, kann verringert werden, indem nur die notwendigen Punkte .config durch Abwahl in make menuconfig ausgewählt werden.
- Für die Übersetzung der Anwendung nutze die Ausführungen des voherigen Punkts.
[edit] Beispiel
Makefile. STAGING_DIR muss auf OpenWRT-SDK zeigen
PROJECT = hello-sdl STAGING_DIR = $(HOME)/nanonote/openwrt-xburst/staging_dir ROOT_DIR = $(STAGING_DIR)/target-mipsel_uClibc-0.9.30.1 CC = $(STAGING_DIR)/toolchain-mipsel_gcc-4.3.3+cs_uClibc-0.9.30.1/usr/bin/mipsel-openwrt-linux-uclibc-gcc CFLAGS = -Wall INCLUDES = -I. -I$(ROOT_DIR)/usr/include LIBS = -lSDL -L$(ROOT_DIR)/usr/lib PARTS = main.o .c.o: $(RM) $@ $(CC) -c $(CFLAGS) $(INCLUDES) $*.c all: $(PROJECT) $(PROJECT): $(PARTS) $(CC) -Wl,-rpath-link=$(ROOT_DIR)/usr/lib $(LIBS) -o $(PROJECT) $(PARTS) clean: rm -f *.o $(PROJECT)
main.c. Du musst image.bmp in das Programmverzeichnis legen, damit das Beispiel korrekt funktioniert.
#include <SDL/SDL.h>
int main( int argc, char **argv)
{
if ( SDL_Init( SDL_INIT_VIDEO) != 0) {
printf("Unable to initialize SDL: %s\n", SDL_GetError());
return 1;
}
atexit( SDL_Quit);
SDL_Surface *screen = SDL_SetVideoMode( 320, 240, 24, SDL_DOUBLEBUF);
if ( NULL == screen) {
printf("Unable to set video mode: %s\n", SDL_GetError());
return 1;
}
SDL_Surface *original_image = SDL_LoadBMP("image.bmp");
if ( NULL == original_image) {
printf("Unable to load bitmap: %s\n", SDL_GetError());
return 1;
}
SDL_Surface *image = SDL_DisplayFormat( original_image);
SDL_FreeSurface( original_image);
SDL_Rect blit_from = { 0, 0, image->w, image->h};
SDL_Rect blit_to = { 90, 90, image->w, image->h};
SDL_BlitSurface( image, &blit_from, screen, &blit_to);
SDL_Flip( screen);
SDL_Delay( 2500);
return 0;
}