Portieren von Programmen und Bibliotheken

Aus Lowlevel
Version vom 14. Juli 2010, 16:25 Uhr von PNoob (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „{{Tutorial |Titel=Portieren von Programmen und Bibliotheken |Schwierigkeit=⚫⚫⚫⚪⚪ |Vorwissen= |Sprache= Assembler, C,C++ …“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu:Navigation,
Portieren von Programmen und Bibliotheken
Schwierigkeit:

nicht angegeben

Benötigtes Vorwissen: keins*
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

<sys/time.h> <c> int gettimeofday(struct timeval *restrict tp, void *restrict tzp); </c>

<stdlib.h> <c> void *malloc(size_t size); void free(void *pointer); void exit ( int status ); char * getenv ( const char * name ); </c>

<time.h> <c> time_t time ( time_t * timer ); </c>

<stdio.h> <c> 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 ); </c>

<c> size_t write(int fd, const void *buf, size_t count); </c>


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