Linux Notizen / Programmierung
StartSeite | LinuxNotizen/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Wie kommt man als Entwickler mit Windows-Background am schnellsten in die LinuxProgrammierung (UnixProgrammierung) hinein?
LinuxProgrammierung kann vieles bedeuten:
- Programmieren im TextMode? (wie DOS)
- Programmieren für die GrafischeOberfläche
- Änderungen an KDE-Programmen (OpenSourceBeteiligung)
- Entwickeln eigener KDE-Programme (ApplikationsEntwicklung?)
- Programmieren am LinuxKernel (vermutlich eher selten, vielleicht aber für das Verständnis des Systems interessant)
- ...
Was sind die wesentlichen Kenntnisse, die man braucht?
Man benötigt:
- Solide Kenntnisse von C
- Grundkenntnisse von Unix (vor allem die Unterschiede zu Windows sind interessant)
- Entwicklertools (Editoren, IDEs, ...). Hier geht es vor allem darum, aus der Vielfalt das auszuwählen, was am intuitivsten benutzt werden kann.
- ...
Am einfachsten ist immer, von dem zu lernen, was die Community bisher produziert hat. Das attraktive an Linux ist, dass praktisch alles als Source verfügbar ist. Die Sources zu den Systembestandteilen werden als eigene Source-Packages installiert.
Installation von Source Packages bei der SuSe-Distribution | |
Das YaST2-Kontrollzentrum ermöglicht die Installation tausender Packages. Die Sources sind jedoch ein bisschen versteckt (und werden von der Suchfunktion nicht erfasst):
- YaST2-Kontrollzentrum starten (Werkzeugsymbol in der KDE-Menüleiste)
- Software - Software installieren/löschen
- [x] Paketserien anzeigen
- Paketserie "zq Quellpakete" auswählen
- Pakete auswählen
- ...
Nach der Paket-Installation (z. B. grep, m4, kdebase) durch YaST existieren folgende Files (siehe /DateienSuchen):
/usr/src/packages/SOURCES/m4-1.4o.dif
/usr/src/packages/SOURCES/m4-1.4o.tar.gz
/usr/src/packages/SOURCES/kdebase-2.2.1.tar.bz2
Die tar-Files sind die gepackten Entwicklungsverzeichnisse.
Installation von Source Packages (andere Distributionen) | |
ToDo
Dekompression | |
Dekompression .tar.bz2 Archive:
- bunzip2 -c whatever.tar.bz2 | tar xvf -
Dekompression .tar.gz Archive:
- gunzip -c whatever.tar.gz | tar xvf -
Die Dekompression erzeugt entsprechend benannte Unterverzeichnis(bäum)e (z.B. .../SOURCES/m4-1.4o/...) mit den gesamten Entwicklungsdateien und Sources.
Übrigens hat ein modernes tar die Möglichkeit auch per Option direkt zu Dekomprimieren:
- tar vxzf whatever.tar.gz
bzw. via -j für bzip2. Finde ich persönlich etwas einfacher.
Installation | |
Im so entstandenen Unterverzeichnis befindet sich eine Datei INSTALL, welche die für die Installation erforderlichen Befehle beschreibt. Meist (aber nicht immer) handelt es sich um die folgenden Befehle:
- ./configure (im wesentlichen Vorbereitungsarbeiten)
- make (im wesentlichen Compilation) <--- Meist ein länger dauernder Prozess!
Nicht selten/oft/(meistens) ist auch ein Test an dieser Stelle enthalten
- make test Wenn vorhanden _unbedingt empfohlen_
- make install (im wesentlichen Kopieren der exekutierbaren Dateien an ihren endgültigen Ort)
Wer sich als Windows-Mensch wundert, was die Zeichen "." und "/" vor dem configure bedeuten sollen: Das configure ist ein Script (=Batchdatei) im aktuellen Unterverzeichnis. Unter Unix werden ausführbare Dateien aber nicht automatisch im aktuellen Verzeichnis gesucht, sondern nur in den Verzeichnissen der Umgebungsvariablen PATH. Das "./" ist sozusagen eine minimale Pfadangabe, damit das Unix weiß, woher es das Programm nehmen soll. Siehe aber auch /ShellAufWindowsTunen. -- hl
Verzeichnisstruktur | |
Verzeichnisse, die in dem Zusammenhang der Programmierung eine besondere Rolle spielen:
/etc (allgemeine Konfigurationsfiles)
~ (oft ident mit) /usr/home/username (persönliche Konfigurationsfiles)
/usr/bin (exekutierbare Programme in Originalversion)
/usr/local/bin (exekutierbare Programme in der lokal installierten Version)
/usr/src/packages/SOURCES (Stammverzeichnis für die Installation von packages)
Die selbst kompilierten installierten Programmversionen (nehmen wir einmal an: ein modifiziertes grep) werden bei make install ins Verzeichnis /usr/local/bin/ kopiert. Sie überschreiben nicht allfällige Originalversionen, die sich in /usr/bin befinden und werden bevorzugt aufgerufen, weil die PATH-Variable default-mäßig /usr/local/bin vor /usr/bin enthält.
Siehe auch FHS, der FilesystemHierarchyStandard?: http://www.pathname.com/fhs/. Das ist ganz hilfreich, um die Bedeutung von /usr vs /usr/local zu verstehen.
Environment | |
Das Environment unter UNIX ähnelt jenem unter DosWindows, nur die Befehle sind anders:
Ganzes Environment anzeigen:
- env oder printenv (statt set unter DosWindows)
Einzelne Variable anzeigen:
- echo $SHELL
- echo $PATH (statt path unter DosWindows)
Variable setzen (verschiedene Varianten möglich):
- export variable=wert (stat set variable=wert unter DosWindows)
- variable=wert und export variable
Konfigurationsfiles | |
Für den Umsteiger sind die Unix-Konfigurationsfiles leicht verwirrend. Es gibt im schlimmsten Fall etwa ein Dutzend möglicher Files ( /etc/profile ~/.profile /etc/login ~/.login /etc/bashrc ~/.bashrc ~/.cshrc ~/.shrc ...) die in Frage kommen.
Die heißesten Tipps sind:
- /etc/profile (als allgemeiner Konfigurationsfile)
in Verbindung mit einem der folgenden Files (je nach der eingestellten Shell - echo $SHELL):
- ~/.bashrc
- ~/.cshrc
- ~/.shrc
/etc/profile, ~/.profile, ~/.bash_profile ~/.bashrc ~/.bash_logout Dateien werden von der Bash benutzt. Csh/Tcsh benutzen die allgemeinen Konfigurationsdateien /etc/csh.cshrc, /etc/csh.login, /etc/csh.logout und die individuellen ~/.tcshrc, ~/.cshrc, ~/.login, ~/.logout. Ein grober Ueberblick findet sich eher am Ende von ManPages? unter dem Punkt Files.
Nur als Appetitanreger zur SUSE-Situation:
Wunschtraum: Es wäre schon, wenn irgendwo ein Logfile existieren würde, der die Konfigurationsfiles protokolliert, die beim Starten der Shell verarbeitet wurden.
- In der Regel wird die Reihenfolge in der entsprechenden ManPage? beschrieben.
- Introduction to Linux/Unix programming, by Graeme Cross, http://www.luv.asn.au/overheads/prog/
- Unix Programing FAQ, http://www.erlenstar.demon.co.uk/unix/faq_toc.html
- Unofficial FAQ, http://www.daimi.au.dk/~kasperd/comp.os.linux.development.faq.html
- gcc compiler, http://gcc.gnu.org/
- glibc, Die C-Library, http://www.gnu.org/software/glibc/
- GNU configure and build, http://www.airs.com/ian/configure/
- autoconf, http://sources.redhat.com/autoconf/autoconf_toc.html
- Working with Unix Object Libraries, http://nina.pagesz.net/~scotty/unixtips/wwobjlib.html
- Gambas ( Vb unter Linux KDE ) http://gambas.sourceforge.net/
- Gambaskurs in Deutsch http://de.wikibooks.org/wiki/Gambas
Fortgeschrittenenkommentare | |
Expertenkommentare | |
KategorieLinux
StartSeite | LinuxNotizen/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 20. November 2004 22:13 (diff))