{{Tutorial |Titel=Portieren von Programmen und Bibliotheken |Schwierigkeit=1 |Vorwissen= |Sprache= [[Assembler]], [[C]],[[C++]] }} In diesem Tutorial geht es um das Portieren von Programmen und Bibliotheken aufs eigene Betriebssystem. Es ist nicht sehr sinnvoll, alle Programme neu zu schreiben, weil es diese schon zu hunderten gibt. == Vorbereitung == Als erstes solltest du dir einen Crosscompiler für dein OS aufsetzten und ein paar Funktionen in deiner libc implementiert haben. == Portieren == === Programme === Hier werde ich einige Programme auflisten, welche sich recht einfach portieren lassen und werde zu jedem Programm erklären welche Schritte notwendig sind. ==== FASM ==== Ich verwende als Beispiel die Version 1.69.14. ===== Benötigte Funktionen ===== int gettimeofday(struct timeval *restrict tp, void *restrict tzp); void *malloc(size_t size); void free(void *pointer); void exit ( int status ); char * getenv ( const char * name ); time_t time ( time_t * timer ); FILE *fopen(const char *filename, const char *mode); int fclose( FILE *stream); size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream ); int fseek ( FILE * stream, long int offset, int origin ); long int ftell ( FILE * stream ); size_t write(int fd, const void *buf, size_t count); Wenn du alle diese Funktionen in deiner libc implementiert hast, kannst du weiterlesen, ansonsten solltest du dies erstmal tun. ===== Bauen ===== Du brauchst FASM, LD und deine libc als .a-Datei. Zuerst assemblierst du FASM mit fasm fasm.asm fasm.o. Danach linkst du die fasm.o gegen deine libc.a. === Bibliotheken === Hier werde ich einige Bibliotheken auflisten, welche sich recht einfach portieren lassen, und werde zu jedem Programm erklären, welche Schritte notwendig sind. ==== zlib ==== Ich verwende als Beispiel die Version 1.2.5. ===== Benötigte Funktionen ===== [[Kategorie:Tutorials]]