Compiling for the NanoNote/de

From Qi-Hardware
Jump to: navigation, search

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.

  1. 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.
  2. 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;
}
Personal tools
Namespaces
Variants
Actions
Navigation
interactive
Toolbox
Print/export