{{Tutorial |Titel=Portieren von Programmen und Bibliotheken |Schwierigkeit=⚫⚫⚫⚪⚪ |Vorwissen= |Sprache= [[Assembler]], [[C]],[[C++]] }} == Worum geht es in diesem Tutorial? == In diesem Tutorial geht es um portieren von Programmen und Bibliotheken aufs eigene OS. Es macht wenig Sinn alle Programme neuzuschreiben, 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 deine rlibc implementiert hast kannst du weiterlesen ansonsten solltest du erstmal alle Funktionen implementieren ===== Bauen ===== Du brauchst FASM, LD und deine libc als .a Datei. zuerst assembilierst 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]]