|
Code::Blocks ist eine
Entwicklungs-Umgebung (Integrated Development Environment, IDE) für die
Programmiersprache(n) C und C++ Code::Blocks gibt es in kostenfreien Versionen für alle gängigen Betriebssysteme. |
|
Als Compiler-Programm (Übersetzung des C++ QuellTextes in Maschinensprache) wird fast immer der GNU Compiler (GCC) bzw. MinGW (Minimalist GNU for Windows) verwendet. |
C/C++ |
Klassiker der modernen Programmiersprachen |
| Code::Blocks | Kostenfreie C/C++ Entwicklungs-Umgebung für alle gängigen Betriebssysteme |
| Virtueller PC | Ideale portable Entwicklungs-Umgebung |
| Konfiguration | Einrichtung der Entwicklungs-Umgebung |
| Projekt | Ein einfaches Code::Blocks C-Projekt |
| Konsole | Einfache Tipps & Tricks für Konsolen-Programme |
| CGI | Herstellung von Webserver-HilfsProgrammen |
| Compiler | Code::Blocks als einfacher Compiler für einen vorhandenen C-Quelltext |
| Template | Änderung der MusterProgramme, Anlage neuer Projekt-Typen |
| MinGW | Der MinGW Compiler mit Konsolen-Bedienung (Details) |
| Bibliotheken | Einbindung fertiger externer Bibliotheken |
| Verwandte Themen | GNU GCC / MinGW-Compiler, Eclipse-IDE |
Code::Blocks |
|
|
Eine Entwicklungs-Umgebung (Integrated Development Environment IDE oder
Grahical User Interface GUI) stellt in bequemer Form alle Resourcen zur Verfügung,
die man für eine bestimmte Entwicklung (Programmierung) benötigt. Code::Blocks ist selbst kein Compiler-Programm sondern eine besonders einfache Bedienungs-Oberfläche (User-Interface) für ein C/C++ Compiler-Programm, speziell für die → GNU Compiler Collection (GCC, auf Windows MinGW) Man kann Code::Blocks auf allen gängigen Betriebssystemen verwenden. Auf Debian- und Ubuntu-Linux gibt es Code::Blocks als vorbereitetes Paket, das man mit einem MausKlick installieren kann. Auf OpenSuSE-Linux und Windows muss man manuell installieren und konfigurieren. |
♥
Code::Blocks ist vergleichsweise einfach zu bedienen und wird daher für wenig
geübte C/C++ EntwicklerInnen empfohlen. Versierte EntwicklerInnen verwenden meist → Eclipse auf einem Linux-System und verfügen damit über ein professionelles Entwicklungs-System. • Die Hinweise dieser Seite beziehen sich daher vorwiegend auf Windows. |
Download & Installation► Laden sie Code::Blocks am besten von der Homepage des Projekts: http://www.codeblocks.org• Wenn sie den C/C++ Compiler auf Windows selbst installieren, dann wählen sie die kleinere Version (ca. 25MiB) des Installers (→ Informationen dazu). • Für wenig geübte EntwicklerInnen wird auf Windows die größere Version (ca.75MB) empfohlen, die zusammen mit Code::Blocks auch den →MinGW Compiler installiert. ► Installieren sie die Programme, normalerweise im Pfad C:\Programme\CodeBlocks
Der mit-installierte Compiler befindet sich in diesen Fall im Pfad
C:\Programme\CodeBlocks\MinGW
|
Virtueller Entwicklungs-PCZur Ausbildung ist am besten ein ↓ Virtueller PC geeignet: Der gesamte PC inkl. Betriebssystem, Code::Blocks und einigen weiteren Werkzeugen passt bequem in eine Festplatten-Datei 2...3GiB und ist daher auf jedem USB-Stick portabel.♦ Details zu Code::Blocks auf virtuellen PC |
EditorEin Text-Editor Programm ist als Universal-Werkzeug unentbehrlich.
♥
Besonders empfehlenswert ist
Notepad++ (kostenfrei, nur für Windows, auch als portable Version für
USB-Stick).Notepad++ kann man auch als alternativen C/C++ Editor (nicht als Compiler) verwenden, und darüber hinaus einige besondere Optionen nutzen, z.B. ausgezeichnete Funktionen zum Suchen und Ersetzen, zur Format-Umwandlung, Macro-Programme usw. ▼ Textverarbeitungs-Programme (LibreOffice-Writer, MS-Word, ...) sind für diesen Zweck ungeeignet. Der Windows Standard-Editor notepad.exe ist nur eine Notlösung. |
DateiSystem► Legen sie ein eigenes Verzeichnis (Ordner) für ihre C/C++ Projekte an. Der von Windows vorgesehene Pfad C:\Dokumente und Einstellungen... ist viel zu lang, zu kompliziert und enthält unangenehme Leerzeichen im Namen. Verwenden sie ihn nur als Notlösung. Besser ist z.B.C:\CPP
► Legen sie ein eigenes Verzeichnis (Ordner) für die mit C++ erzeugten eigenen Programme *.exe an, z.B. im Pfad C:\Programme\_MeineProx
Das führende _ Underline-Zeichen bewirkt,
dass dieses Verzeichnis als erstes (ganz oben) in einer
Verzeichnis-Liste dir angezeigt wird.► Tragen sie diesen Pfad in die → Umgebungs-Variable PATH ein: Öfnen sie Fügen sie am Ende einen ; Strichpunkt als Trennzeichen und danach den Pfad zum Verzeichnis ihrer eigenen Programme an. Die mit C++ erzeugten Programme werden später aus ihren Projekt-Ordnern in dieses Verzeichnis kopiert und dort bequem ausprobiert. |
Referenzen & TutorialsMan findet im Internet zahlreiche ausgezeichnete C++ Referenzen. Mindestens eine davon sollte am (virtuellen) Entwicklungs-PC installiert sein, damit sie jederzeit auch ohne Internet-Zugang rasch verfügbar ist.• Produkte auf Webseiten (*.html) sind ideal. • Produkte auf *.pdf Dateien sind ebenfalls universell verwendbar, benötigen jedoch die Installation eines PDF-Viewer Programms und brauchen meist lange zum Laden. |
Auf jedem halbwegs professionellen Entwicklungs-PC sollte ein Webserver installiert sein,
am besten der Standard-Server
→ Apache.
Die Installation ist problemlos und braucht weniger Platz als ein PDF-Viewer. |
Code::Blocks auf einem virtuellen Entwicklungs-PC |
|
Virtuelle ComputerFür jede Entwicklungs-Arbeit sind → virtuelle Computer besonders gut geeignet, selbstverständlich auch für die Arbeit mit der Programmiersprache C/C++Die beiden am Markt führenden Virtualisierungs-Systeme VirtualBox und VMWare sind gleichermaßen dazu geeignet. Mit beiden Systemen kann man kostenfrei neue virtuelle PC erstellen oder vorhandene betreiben.
VirtualBox erfordert vor der Installation oder Verwendung die
Installation von Java (JRE).
Man kann mit VirtualBox neue virtuelle PC erzeugen oder vorhandene laufen lassen. Vor jedem Transport muss man den virtuellen PC zeitraubend exportieren, danach wieder importieren. Vor dem Export muss man einige Optionen (Netzwerk, Shared Folders, ...) abschalten, nach dem Import wieder einschalten und neu konfigurieren.
VMWare ist insbesondere für wenig geübte AnwenderInnen einfacher zu bedienen.
Man kann mit dem kostenfreien VMWare-Player neue virtuelle PC erzeugen oder vorhandene
laufen lassen.Die hier genannten und andere Virtualisierungs-Systeme sind nicht direkt mit einander kompatibel. Die Umwandlung eines virtuellen PC zwischen VirtualBox ↔ VMware ist theoretisch möglich, in der Praxis jedoch nicht verlässlich und daher wenig empfehlenswert. |
Transport mit USB-StickDie Dateien, aus denen ein virtueller PC besteht, sind probemlos auf USB-Stick portabel. Damit lässt sich jeder virtuelle Gast-PC ohne Änderung auf realen Host-PC aller gängigen Betriebssysteme betreiben, insbesondere auf Linux- und Windows-PC.Verwenden sie den USB-Stick nur zum Transport: ● Starten sie den virtuellen PC nur von einer Festplatte, denn dazu ist ein USB-Stick viel zu langsam ! SpezialisierungEin virtueller PC wird am besten für einen einzigen Zweck eingerichtet - in diesem Fall zur Programmierung mit C/C++.Die zahlreichen Lasten heutiger überfrachteter Arbeits-PC sollte man unbedingt weglassen, z.B. Spiele, MultiMedia, Grafik, Büro-Programme, Virenschutz, Firewall, usw. - Bei einem Problem wird der virtuelle PC einfach gelöscht und man arbeitet mit einer neuen Kopie weiter. Auf diese Weise arbeitet ein virtueller Gast-PC oft schneller als der gastgebende reale Host-PC... Wozu ein virtueller Entwicklungs-PC ?Wer noch nie mit virtuellen PC gearbeitet hat, versteht manchmal nicht den Sinn dieser Maßnahme. Der virtuelle PC wird für einen einzigen Zweck eingerichtet und ist dafür klein, schnell, transportabel und bei Problemen sofort ersetzbar. In der Ausbildung kann man einen komplett konfigurierten, sofort arbeitsfähigen Linux Entwicklungs-PC auch an wenig geübte StudentInnen weitergeben. Am eigenen Arbeits-PC werden weniger Programme installiert, das ergibt weniger potentielle Probleme.♦ Details zum Thema Virtualisierung |
Linux• Auf Linux kann man zwischen mehreren Desktop Programmen wählen. Installieren sie am virtuellen Entwicklungs-PC - wenn überhaupt - den sparsamsten verfügbaren Desktop, z.B. FVWM, IceWM, ....• Die meist verwendeten Desktops (Gnome, KDE) brauchen für spektakuläre Grafik und MultiMedia viel ArbeitsSpeicher und sind daher für virtuelle PC wenig geeignet. • Fortgeschrittene C/C++ EntwicklerInnen können auf einen Desktop ganz verzichten: Am besten bewährt sich ein Debian System mit Entwicklungs-Werkzeug, jedoch ohne Desktop. Code::Blocks ist ohne Grafik nicht nutzbar, man verwendet ohne Desktop den Konsolen-Compiler gcc ♣ Tipp: Die meisten (portablen) Programme kann man auch auf Windows-2000 entwickeln, den Quelltext auf Linux (ohne Desktop) kopieren und dort einfach nochmals compilieren. |
Windows• Windows 2000 ist am besten als Betriebssystem des virtuellen Entwicklungs-PC geeignet: Schon mit 64...128 MB ArbeitsSpeicher kann man ausgezeichnet arbeiten.Die Mehrheit der AnwenderInnen arbeitet noch immer mit Windows und findet sich in einem (wenn auch älteren) Windows-System am besten zurecht. Sparsame Resourcen sind wichtig, weil sich der virtuelle PC den vorhandenen Arbeitsspeicher mit dem realen Host-PC teilen muss. Alle für die C/C++ Entwicklung benötigten Programme laufen auf Windows-2000 rasch und problemlos. • Windows XP ist ebenfalls geeignet, braucht jedoch für die gleiche Leistung mehr ArbeitsSpeicher. Wenn die Unterstützung von Windows-2000 nachlässt, oder wenn man am realen Host-PC genug Arbeitsspeicher hat, das bevorzugte Windows EntwicklungsSystem. • Neuere Windows Systeme brauchen für die gleiche Leistung zu viele Resourcen und sind daher für diesen Zweck wenig geeignet. |
VerbindungFür jeden virtuellen PC ist es wichtig, dass der Austausch von Daten zwischen dem virtuellen Entwicklungs-PC und dem realen Host-PC verlässlich funktioniert.In einem lokalen Netzwerk muss der virtuelle PC auch an alle gemeinsam verwendeten Resourcen und an das Internet herankommen. |
Alle gängigen Virtualisierungs-Systeme bieten dazu mindestens 2 unabhängige Systeme, die man beide (!) konfigurieren und testen sollte: Shared Folder und Netzwerk. ♣ Tipp: Richten sie jeden virtuellen PC mit 2 Netzwerk-Interface ein. Konfigurieren sie das erste mit NAT, das zweite mit Bridged. Diese Variante hat sich als robust und ohne weitere Konfiguration fast überall einsetzbar erwiesen. |
Shared FolderDarunter versteht man ein Verzeichnis (Ordner), auf welches sowohl der reale Host-PC als auch der virtuelle Gast-PC Zugriff hat.Die Konfiguration ist je nach Software und Version unterschiedlich: Konsultieren sie die jeweiligen Manuals. ♣ In jeder Version muss man am realen Host-PC ein Verzeichnis (Ordner) für diesen Zweck einrichten und den absoluten Pfad zum SharedFolder angeben. Das ist am eigenen privaten PC kein Problem. Eine Möglichkeit ist z.B. ein Verzeichnis C:\Shared
♣ Wenn der virtuelle PC eine Änderung seines Einsatz-Ortes erkennt, dann schaltet er die Verbindung mit dem SharedFolder zur Sicherheit ab. In diesem Fall muss man entweder den Pfad neu angeben oder (besser und sicherer) darauf verzichten. Wählen sie einen freien Laufwerks-Buchstaben (z.B. S:) und klicken sie Je nach Produkt und Version findet man damit das private VMWare- oder VirtualBox-Netzwerk zwischen dem realen und dem virtuellen PC. Achtung - das kann bei der ersten Verwendung oder nach einem Ortswechsel einige Zeit dauern ! Nach erfolgreicher Verbindung kann man den SharedFolder am virtuellen PC als Volume (wie eine zusätzliche Festplatte) verwenden. |
NetzwerkJeder Virtuelle PC arbeitet in einem (lokalen) Netzwerk, mindestens zwischen dem realen Host-PC und dem virtuellen Gast-PC.• Die Verbindung mit dem lokalen Netzwerk (LAN) funktioniert genauso wie auf jedem realen PC und wird mit Standard-Methoden eingerichtet. Sie sollte unbedingt funktionieren, weil damit alle Programme des virtuellen PC Verbindung zum jeweiligen LAN und zum Internet erhalten. • In den meisten Fällen wird die Verbindung zum LAN automatisch durch einen → DHCP-Server konfiguriert. Bei manueller Konfiguration muss man evtl. die → IP-Adresse bei jedem Wechsel des Standorts anpassen. ► Richten sie am virtuellen PC ein Verzeichnis zur Freigabe im LAN ein, z.B. C:\Public
Mit Rechtsklick auf das Verzeichnis-Icon können sie es für den
allgemeinen Zugriff freigeben. Das ist kein Risiko, denn dorthin kopiert man nur
Quelltext-Dateien *.cpp und/oder fertige
Windows-Programme *.exe Anschließend kann man dieses Verzeichnis mit jedem LAN-PC nutzen und Daten austauschen. Auf einem Windows-PC verbindet man dieses "Share" als Netzlaufwerk, auf einem Linux-PC mit smbclient • Wenn ihr privates Netzwerk und/oder das Netzwerk der Ausbildung (Lehrsaal) über einen → Fileserver verfügt, dann ist es sinnvoll, auch diese Verbindungen am virtuellen PC als Windows-Netzlaufwerke einzurichten. |
Code::Blocks Konfiguration |
|
Code::Blocks KonfigurationDas Programm ist meistens bereits in der installierten Standard-Konfiguration verwendbar. Die Optionen der Konfiguration sind mit dem Menü einstellbar. |
• Kontrollieren sie mindestens das zu verwendende Compiler-Programm: Code::Blocks Menü : Wählen sie den verwendeten Compiler (im Zweifel GNU GCC) • Kontrollieren / Ändern sie die Pfade zu den Compiler-Programmen Wenn sie den GNU GCC Compiler zusammen mit Code::Blocks installiert haben, dann befindet er sich meistens hier: C:\Programme\CodeBlocks\MinGW
Wenn sie den →
GCC/MinGW Compiler unabhängig installiert haben, dann lautet der Pfad meist:
C:\Programme\MinGW
|
Programm-VersionCode::Blocks kann aus C/C++ Quelltext 2 verschiedene Versionen von ausführbaren Programmen *.exe herstellen:
•
Die Debug-Version bietet für fortgeschrittene EntwicklerInnen mehr
Möglichkeiten zur Analyse der Programme. Die Dateien sind allerdings
größer und die fertigen Programme laufen etwas langsamer.
• Die Release-Version ist die endgültige Version eines funktionierenden Programms. Die Dateien sind kleiner, die Programme laufen mit der maximalen von C/C++ erwarteten Geschwindigkeit. Wer sein Programm für maximale Geschwindigkeit oder minimale Größe optimieren will, verwendet direkt den ↓ MinGW Compiler mit entsprechenden Optionen. |
• Bei der Anlage jedes neuen Code::Blocks Projekts kommt man im geführten Dialog zur Seite der Compiler-Optionen. Wählen sie normalerweise den GNU-Compiler und kreuzen sie unbedingt beide Versionen an: Debug-Version und Release-Version. Nach Abschluss der Entwicklung finden sie das fertige ausführbare Windows-Programm *.exe im Projekt-Ordner, z.B. C:\CPP\ProjektName\bin\Release\ProjektName.exe
Erzeugen sie davon eine Kopie und verschieben sie diese an ihren
endgültigen "Arbeitsplatz", z.B.
C:\Programme\ProjektName.exe
C:\Web\cgi-bin\ProjektName.exe |
Linker OptionenWenn sie nur einfache Programme erstellen und am gleichen PC ausprobieren, dann sind keine zusätzlichen Linker-Optionen notwendig.libgcc_s_dw2-1.dll
das kann sich jedoch mit anderen Versionen von GCC und/oder Windows ändern.
|
● Gute Lösung
Tragen sie zusätzliche Linker-Optionen in die Konfiguration von Code::Blocks ein:Menü Tragen sie in das (meist noch leere) Feld diese beiden Optionen ein:
-static-libgcc
Der Linker wird angewiesen, auch die verwendeten Teile der entsprechenden
Bibliothek(en) in das Programm aufzunehmen. Damit wird die Programm-Datei nur unwesentlich
größer, sollte jedoch problemlos auf jedem (Windows)-PC laufen.-static-libstdc++ ● Weniger gute Lösung
Transportieren sie zusammen mit ihrer Programm-Datei *.exe auch alle
vom Programm benötigten Bibliotheken, z.B. libgcc_s_dw2-1.dll Am Ziel-PC sollte sich die *.dll Datei im gleichen Verzeichnis (Ordner) befinden wie das Programm, oder in einem der durch die → Umgebungs-Variable PATH angegebenen Pfade, z.B. C:\Windows\system32\libgcc_s_dw2-1.dll
|
DokumentationCode::Blocks installiert eine detaillierte Dokumentation, die man als erste Quelle heranziehen sollte, da sie genau zur vorhandenen Version passt.Weitere umfangreiche Quellen findet man im Internet mit den Stichworten CodeBlocks und MinGW. Grundkenntniss der englischen Sprache sind für IT-EntwicklerInnen unentbehrlich. |
Informationen zu Code::Blocks: C:\Programme\CodeBlocks\share\CodeBlocks\docs
(PDF und CHM)Informationen zum MinGW Compiler: C:\Programme\CodeBlocks\MinGW\info
(Text-Dateien, mit Notepad++ öffnen)
|
TemplatesBei der Anlage jedes neuen Code::Blocks Projekts erhält man im Fenster main.c bereits ein einfaches MusterProgramm.Dieses Template kann man ändern und an den eigenen Bedarf anpassen. Template für Konsolen-Projekte mit C-Dateien: C:\Programme\CodeBlocks\share\CodeBlocks\templates\wizard\console\c\main.c
Template für Konsolen-Projekte mit C++ Dateien:
C:\Programme\CodeBlocks\share\CodeBlocks\templates\wizard\console\cpp\main.cpp
|
|
Konsolen-Programme |
|
| C/C++ EntwicklerInnen sind meist in wesentlich größerem Ausmaß auf die Konsole angewiesen als bei anderen Programmiersprachen. Die Arbeit wird wesentlich leichter, wenn man über einige Kenntnisse der → Windows-Konsole cmd.exe und / oder der Linux → Shell-Konsole verfügt. |
Einige praktische Tricks werden in diesem Kapitel vorgestellt,
allerdings nur für Windows. Nach Erfahrung verfügen Linux-EntwicklerInnen ohnehin über mehr Kenntnisse von Betriebssystem und (Shell)-Konsole. |
Hilfe zu cmd.exeViele Windows-AnwenderInnen kennen keine der umfangreichen Optionen der Konsole. Sie ist zwar ein Relikt aus MS-DOS Zeiten, bietet jedoch viele Möglichkeiten, die von Windows mehr oder weniger gut versteckt werden. |
♣
Tipp: Die umfangreiche Hilfe zeigt man besser nicht direkt an, sondern
leitet den Text in eine Datei, z.B.
C:\> help cmd > c:\cmd_help.txt
Öffnen sie den Hilfe-Text C:\cmd_help.txt mit
einem Text-Editor.
|
•
Zeigen sie den PC-ArbeitsPlatz (DeskTop) an und legen sie darauf mit
einen SoftLink
(Alias) an: - Danach
sollte sich am DeskTop ein Icon der Konsole befinden. |
Konfiguration der KonsoleÖffnen sie ein Konsolen-Fenster (z.B. mit DoppelKlick auf das mit dem ← links vorgestellten Tipp hergestellte DeskTop-Icon) und RechtsKlicken sie in den Titel-Balken.• Ändern sie Bestätigen sie mit OK und übernehmen sie die Änderung auf Anfrage nicht nur für dieses sondern für alle Konsolen-Fenster. • Damit ist es möglich, auch lange Ausgabe-Texte zu aufzunehmen und mit RollBalken anzuzeigen. |
Arbeits-UmgebungDie fertig compilierten Programme lassen sich zwar mit Code::Blocks bequem ausführen, das ist jedoch eine "Geschützte Umgebung" nur zur Entwicklung.Kopieren sie die fertig gestellten Programme vom Entwicklungs-Pfad C:\CPP\MeinProg\bin\Release\MeinProg.exe
in eine Arbeits-Umgebung, z.B.
C:\Programme\MeinProg.exe
|
Zuerst Konsole, dann ProgrammJedes Konsolen-Programm wird am einfachsten so ausgeführt:Man öffnet eine Konsole, z.B. mit oder mit An der geöffneten Konsole gibt man den kompletten absoluten Pfad zum Programm ein, z.B. C:\> c:\programme\meinprog.exe
Alternativ navigiert man zuerst zum Pfad des Programms und startet es dann durch
Angabe seines DateNamens. Die DateiErweiterung *.exe
kann man optional weglassen:
C:\> cd c:\programme
C:\Programme> meinprog |
Auf die Return-Taste wartenEigene, mit C/C++ erstellte Konsolen-Programme *.exe werden zwar mit DoppelKlick ausgeführt, man sieht jedoch bestenfalls ein kurzes Zucken am Monitor: Ein typisches Programm hat eine Laufzeit von wenigen ms (Millisekunden), danach wird die Konsole sofort wieder geschlossen.Man kann am Ende des Programms eine der Eingabe-Funktionen einfügen. Das Programm wartet dann so lange, bis man die Return-Taste drückt, ignoriert die eingegebenen Zeichen und schließt das Fenster: #include <stdio.h>
int main() {
char c;
}
// ... ...
c=99;printf("Return-Taste schliesst das Fenster. "); while((c=getchar())!='\n' && c!=EOF) {} return 0; Auf Windows kann man etwas bequemer die Funktion getch() der Bibliothek <conio.h> verwenden, das Programm ist jedoch in diesem Fall nicht portabel. |
Verknüpfungs-EigenschaftenEs gibt eine weitere Möglichkeit, ein Konsolen-Fenster offen zu halten. Diese Variante eignet sich für Konsolen-Programme, die man öfters oder für längere Zeit braucht.• Kopieren sie dazu am besten die für die Konsole angelegte DeskTop-Verknüpfung. • Ändern sie den Namen der Kopie mit , z.B. auf MeinProg • RechtsKlicken sie die Verknüpfung und ändern sie : Fügen sie am Ende die Option /K und danach den Pfad zu ihrem Programm an, z.B. cmd.exe /K c:\programme\meinprog.exe
Danach sollte die Verknüpfung beim Starten eine Konsole öffnen,
das angegebene Programm ausführen und das Fenster offen halten.
|
Webserver-(CGI)-Hilfsprogramm |
|
WebserverEin "Konsolen"-Programm braucht nicht unbedingt die Windows-Konsole cmd.exe sondern kann auch mit anderen Programmen zusammenarbeiten. Eine besonders wichtige Variante ist die Arbeit als Webserver-HilfsProgramm (CGI-Programm). |
Ein → Webserver ist ein Hintergrund-(Server)-Programm, welches auf Anfrage über das Netzwerk Daten (Webseiten) an seine Clients (Browser-Programme) liefert. ♦ Details zum Webserver |
Statische DatenIm einfachsten Fall sendet ein Webserver auf Anfrage einfache Text-Dateien *.html, die als Inhalt → HTML-Quelltext enthalten. Die gelieferten Daten (HTML-Quelltext) sind für jede Client-Anfrage die gleichen, die angezeigten Webseiten haben daher immer den gleichen Inhalt (statische Webseiten).• Ein Webserver hat nur auf genau bezeichnete Ordner und Dateien Zugriff. Auf Windows kann man z.B. diesen Pfad als Arbeits-Verzeichnis eines Webservers einrichten: C:\Web\htdocs
In diesem Fall verwaltet der Webserver alle Dateien, die sich in diesem
Ordner oder in einem darin enthaltenen UnterOrdner befinden.Beispiel:
Wenn ein Browser am gleichen PC diese Anforderung sendet
http://localhost/meinedatei.html
dann sucht der Webserver nach einer Datei
C:\Web\htdocs\meinedatei.html
und sendet sie an den Browser.Die Anfragen anderer Browser sehen ganz ähnlich aus, man muss lediglich die Standard-Adresse localhost durch die → IP-Adresse oder den Domain-Namen des Webservers ersetzen. ● Wenn man statische Daten ändern will, dann muss man die betreffende Datei im Webserver Arbeits-Verzeichnis durch eine neue Version ersetzen. Diese Aufgabe kann z.B. ein mit C/C++ erstelltes Programm übernehmen. |
Dynamische DatenDer von einem Webserver gelieferte HTML-Text muss nicht aus einer Datei stammen: Man kann ihn auch Live mit einem Programm herstellen.Das ist nicht besonders schwierig, denn mit jeder Programmiersprache kann man ein Programm herstellen, welches ein paar Zeilen HTML-Text als Ausgabe erzeugt. Mit C/C++ muss man dazu nur die → Funktion printf() beherrschen. • Für solche Webserver-(CGI)-HilfsProgramme ist ein eigenes Verzeichnis konfiguriert, z.B. C:\Web\cgi-bin
Beispiel:
Wenn ein Browser am gleichen PC diese Anforderung sendet
http://localhost/cgi-gbin/meinprog.exe
dann startet der Webserver das Programm
C:\Web\cgi-bin\meinprog.exe
Der vom Programm erzeugte Ausgabe-Text wird vom Server an den anfragenden
Browser gesendet.• Der Vorteil von CGI-Programmen liegt in der Möglichkeit, die Ausgabe je nach Bedarf und Situation zu ändern, d.h. dynamische Daten herzustellen. ● Mit C/C++ kann man ausgezeichnete CGI-Programme herstellen. In dieser Version werden keine HTML-Text-Dateien gespeichert: Das CGI-Programm wird für jede einzelne Anfrage neu gestartet. Deshalb hat Geschwindigkeit einen hohen Wert. |
Beispiel CGI-ProgrammEin CGI-Programm unterscheidet sich nur wenig von einem einfachen Konsolen-Programm mit ein wenig Text-Ausgabe.• Die rot bezeichnete Anweisung sendet einen Standard-Text als Ankündigung für die → MIME-Type der nachfolgenden Daten. Der Text muss in genau dieser Form vor allen anderen Daten ausgegeben werden. • Das übrige Programm ist trivial: Es erzeugt als Ausgabe diesen HTML-Text:
<html>
Jeder Browser, welcher diesen HTML-Text erhält, zeigt eine
Mini-Webseite mit dem angegebenen Titel.
<h1>CGI-Test</h1> <html> |
C/C++ QuellText cgidemo.c #include <stdio.h>
int main() {
printf("Content-type: text/html\r\n\r\n");
printf("<html>\n");printf("<h1>CGI-Test</h1>\n"); printf("</html>\n"); return 0; Mit ein wenig Phantasie kann man das Programm jedoch so ergänzen, dass es fast beliebige Daten (verpackt in HTML) ausgibt. |
| ♣ Tipp: Wer häufig CGI-Programme erstellt, erzeugt dazu am besten ein eigenes ↓ Template (Programm-Muster). |
•
Auf Windows-Systemen kommt es gelegentlich vor, dass auch ein korrekt programmiertes
und installiertes CGI-Programm *.exe nicht funktioniert. Typische Indizien: Andere CGI-Programme funktionieren einwandfrei, im error-log des Webserver findet man Zeilen mit einem Text ähnlich ...(OS 5)Zugriff verweigert...
In diesem Fall blockiert evtl. ein anderes Programm die Datei.
Man kann das betreffende Programm meist mit dem MS-Programm
Process-Explorer finden. Mit etwas Glück behebt auch ein
Neustart des Servers das Problem.
|
Code::Blocks Template |
|
Sicherungs-Kopie !Mit den Hinweisen dieses Kapitels wird das Verhalten von Code::Blocks verändert. Das ist nur für fortgeschrittene AnwenderInnen sinnvoll.In jedem Fall sollten sie vor jeder Änderung eine Sicherungs-Kopie anlegen, und zwar am besten des gesamten Ordners C:\Programme\CodeBlocks\share\CodeBlocks\templates
|
Alle hier angegebenen Pfade, Datei-Namen und Texte sind von der jeweiligen Version abhängig. In anderen Versionen findet man sich mit etwas Kreativität ebenfalls zurecht. ● Alle Änderungen erfolgen selbstverständlich auf eigenes Risiko. |
Anpassung von TemplatesWer öfters neue Code::Blocks Projekte erstellt, muss anfangs meist die gleichen Arbeiten wiederholen. Man kann das Muster-Programm (Template) verändern, um diese Schritte einzusparen.Das Beispiel rechts soll dazu lediglich Anregungen liefern: • Am Anfang wurde ein Kommentar-Block eingefügt. Das ist für jedes Programm sehr empfehlenswert, und erleichtert die Verwaltung. ♣ Tipp: Mit geeigneten Programmen (z.B. Notepad++) kann man nach Stichworten in Dateien (z.B. im Kommentar) suchen. |
Beispiel für ein Template main.c
/*
Projekt:
*/
Version: Stichworte: made by ...
#include <stdio.h>
int main() {
#include <conio.h>
printf("MeinTitel\n");
}
return 0; |
|
Standard-Pfad zum Template für Konsolen C-Dateien:
C:\Programme\CodeBlocks\share\CodeBlocks\templates\wizard\console\c\main.c
Template für Konsolen C++ Dateien:
C:\Programme\CodeBlocks\share\CodeBlocks\templates\wizard\console\cpp\main.cpp
|
|
Neuer Projekt-TypManchmal ist es praktisch, einen zusätzlichen Typ von Code::Blocks Projekten anzulegen. Damit kann man viel lästige Arbeit sparen. Hier wird kurz vorgestellt, wie man einen neuen Typ "CGI-Programm" anlegen kann.Man erzeugt den neuen Projekt-Typ am besten als Kopie eines vorhandenen, hier z.B. als Kopie des Typs "Console application" In diesem Fall muss man am neuen Typ lediglich einige Änderungen vornehmen. Da alle Anpassungen an der Kopie erfolgen, wird die Funktion der Standard-Typen dadurch nicht gestört. Im schlimmsten Fall funktioniert der neue Typ nicht wie erwartet. Alle Arbeiten finden in diesem Pfad statt: C:\Programme\CodeBlocks\share\CodeBlocks\templates
Weiteren Angaben zu Pfaden und DateiNamen sind relativ zu diesem Pfad zu verstehen.
|
(1) Kopieren sie alle Dateien console*.*
und ändern sie die Namen der Kopien auf
cgi*.*
Das betrifft normalerweise 5 Dateien, beginnend mit cgi.cbp (2) Kopieren sie das gesamte Verzeichnis wizard\console
und ändern sie den Namen der Kopie auf
wizard\cgi
(3) Anpassung der Datei cgi.cbp
Ändern sie diese Zeile
<Option title="CGI application" />
|
|
(4) Anpassung der Datei
cgi.template
Ersetzen sie "console" durch "cgi", z.B. in den Zeilen
<Template name="cgi" title="CGI Application"
category="Console" bitmap="cgi.png">
<File source="cgi-main-cpp.cpp" destination="main.cpp"/> <File source="cgi-main-c.cpp" destination="main.c"/> <Option name="CGI Application"> <Project file="cgi.cbp"/> (5) Tragen sie in diese Dateien den QuellText ihrer C/C++ MusterProgramme ein:
cgi-main-c.cpp
Beispiel für c.cpp:
cgi-main-cpp.cpp #include <stdio.h>
int main() {
printf("Content-type: text/html\r\n\r\n");
}
printf("<html>\n"); printf("<h1>CGI-Programm</h1>\n"); printf("</html>\n"); return 0; Der gezeigte Quelltext ist ein Minimal-Beispiel - In der Praxis ist ein sinnvolles Muster wesentlich umfangreicher und erzeugt den HTML Quelltext einer kompletten Standard-Webseite. Weitere sinnvolle Ergänzungen sind z.B. Libraries zur Decodierung von GET- oder POST-Argumenten etc. |
(5) Zuletzt werden die Dateien dieses Verzeichnisses angepasst:
wizard\cgi
(5.1) Anpassung der Datei \wizard\cgi\wizard.script
Ändern sie diese Zeilen der Funktion GetFilesDir()
result = _T("cgi/c");
Änderungen der Funktion BeginWizard() sind nicht
notwendig aber sinnvoll: Ändern sie die Hinweis-Texte sinngemäß.result = _T("cgi/cpp"); (5.2) Anpassung der MusterProgramme
\wizard\cgi\c\main.c
Diese beiden Dateien werden als Templates verwendet. Kopieren sie dazu den Inhalt
der in (5) erstellten Muster in diese beiden Dateien.\wizard\cgi\cpp\main.cpp • Danach sollte Code::Blocks für neue Projekte die Type "CGI" anbieten und mit dem von ihnen angegebenen Muster eröffnen. Beachten sie, dass die beschrieben Änderungen im Original nicht vorgeshen sind und nicht unterstützt werden. Je nach Version kann die Anpassung andere Ma&azlig;nahmen erfordern. • Als Luxus-Variante können sie noch die Icons (*.png) mit einem Grafik-Programm gestalten, z.B. mit Gimp |
MinGW Compiler |
|
|
Code::Blocks verwendet normalerweise den Minimalist GNU for Windows
(→ MinGW)
Compiler zur Übersetzung von C/C++ Quelltext in Maschinensprache. Der MinGW Compiler ist ein Konsolen-Programm, das man mit etwas Erfahrung auch direkt (ohne Code::Blocks) verwenden kann. |
●
AnfängerInnen installieren am besten die größere Version von
Code::Blocks inklusive MinGW-Compiler. ● Fortgeschrittene EntwicklerInnen installieren und konfigurieren zuerst den → MinGW-Compller und danach die kleinere Version von Code::Blocks. |
PfadStellen sie den Pfad zu den beiden Compiler-Programmen fest. Typisch ist
C:\Programme\CodeBlocks\MinGW\bin\mingw32-gcc.exe
C:\Programme\CodeBlocks\MinGW\bin\mingw32-g++.exe Es ist mühsam, jedesmal den langen Pfad zum Compiler an der → Konsole cmd.exe anzugeben. Besser ist es, die Umgebungs-Variable PATH des Systems zu ergänzen: • Öffnen sie • Fügen sie am Ende des Strings einen ; Strichpunkt als Trennzeichen ein, danach den Pfad zum MinGW Compiler, z.B. ...;c:\programme\codeblocks\mingw\bin
Kontrollieren und bestätigen sie die Änderung. Sie wird
je nach Version erst nach Neustart des Systems wirksam.
|
Öffnen sie nach Ergänzung der PATH Variablen
eine Konsole cmd.exe und kontrollieren sie
|
CompilerDer MinGW Compiler bietet eine große Anzahl von Optionen, mit denen sich viele Details des erzeugten Programms beeinflussen lassen. Beispielsweise kann man das Programm auf maximale Geschwindigkeit oder minimale Dateigröße optimieren.Konsultieren sie dazu den Hilfe-Text und die umfangreiche Dokumentation im Internet. Hier wird ein ganz einfaches Beispiel vorgestellt: Quelltext-Datei:Erstellen sie in ihrem C/C++ Arbeitsverzeichnis eine Text-Datei, z.B.C:\CPP\test.c
mit einem minimalen C-Programm, z.B.
#include <stdio.h>
int main() {
printf("C-Programm\n");
}
return 0; |
ÜbersetzungÖffnen sie eine Konsole cmd.exe, navigieren sie in das Verzeichnis der Quelltext-Datei und starten sie den MinGW Compiler:
C:\> cd cpp
Mit Option -o (kleines o) wird die Ausgabe-Datei
angegeben, danach die Eingabe-Datei (C-Quelltext)C:\CPP> gcc -o test.exe test.c Führen sie das erzeugte Programm aus: C:\CPP> test
Auf einem Linux System funktioniert der GCC Compiler mit den gleichen Anweisungen, lediglich mit anderen Pfad- und DateiNamen. |
|
Die Verwendung von
→ Konsolen-Programmen ist nicht so veraltet, wie es aussieht: Konsolen-Programme sind viel kleiner, viel schneller und lassen sich ausgezeichnet fernsteuern und automatisieren. |
Mit einigen Kenntnissen der Konsolen-Programme lässt sich z.B. auch der MinGW Compiler steuern. Auf diese Weise kann man z.B. automatisch und Programm-gesteuert Windows-Programme *.exe "nach Maß" herstellen und anwenden... |
Bibliotheken |
|
|
Es gibt für C/C++ eine sehr große Anzahl an Bibliotheken zur
Erweiterung der Funktionalität. Diese Libraries sind nicht in der
Standard-Version irgend eines Compilers enthalten, weil sie keine allgemeinen
Aufgaben lösen sondern auf bestimmte Gebiete spezialisiert sind. ♣ Im Laufe der Ausbildung merkt man bald, dass man bestimmte Funktionen oder Klassen immer wieder benötigt: In diesem Fall ist es sinnvoll, eine eigene Bibliothek der benötigten Werkzeuge anzulegen und damit die weitere Entwicklung einfacher, rascher und bequemer zu gestalten. |
Zur Einbindung einer Bibliothek muss man sowohl dem Compiler als auch dem Linker die
Pfade zu allen externen Bibliotheks-Dateien mitteilen, die verwendet werden sollen. Hier wird vorausgesetzt, dass die gewünschte Bibliothek bereits installiert (und falls nötig konfiguriert) wurde. ♣ Lesen sie ausnahmsweise auch die Hinweise zu Installation und Verwendung, die in jedem Download enthalten sind... |
CompilerAm Anfang ihres C/C++ Programms müssen sie dem Compiler alle Bibliotheken mitteilen, deren Objekte im Programm verwendet werden. Die Informationen dazu sind in den jeweiligen Header-Dateien *.h enthalten.• Der Pfad zu den Standard-Bibliotheken ist dem Compiler bekannt. Die Namen der betreffenden Header-Dateien werden in < > eingeschlossen, z.B. #include <stdio.h>
|
Externe Bibliotheken werden normalerweise an eigenen Pfaden ausserhalb des Compiler-Verzeichnisses installiert. Dort kann man sie unabhängig vom Compiler besser verwalten (z.B. Updates). Die Pfade zu den Header-Dateien extrener Bibliotheken werden in "" eingeschlossen, z.B. zu einer selbst erstellten Bibliothek auf Windows: #include "C:\CPP\MyLib\mylib.h"
oder zur
→ GD-Grafik-Bibliothek auf Windows:
#include "C:\Programme\GnuWin32\include\gd.h"
|
LinkerDer Compiler übersetzt C/C++ Quelltext in Maschinensprache. Danach wird (meist automatisch) das Linker-Programm gestartet, welches den vom Compiler erzeugten Object-Code' mit jenem der Bibliothek(en) zu einem fertigen Programm verknüpft.Wenn der Linker solche bereits übersetzten Programm-Teile einbinden soll, dann muss man auch diesem Programm die entsprechenden Pfade mitteilen. |
Code::Blocks bietet in der Konfiguration die Möglichkeit zum Einbinden von Linker-Pfaden: Menü Geben sie den Pfad zur Linker-Bibliothek *.lib ein, z.B. für die → GD-Grafik-Bibliothek: C:\Programme\GnuWin32\lib\libgd.lib
♣ Meistens enthalten die Download-Dateien alle notwendigen Hinweise. Ansonsten finden sie im Internet Tipps zur Behebung allfälliger Probleme: Sie sind sicher nicht die/der erste AnwenderIn der jeweiligen Bibliothek und können von den Lösungs-Vorschlägen ihrer VorgängerInnen profitieren. |
|