GNU-Compiler
1. Grundlagen
GNU-C++-Compiler
g++ -o <executable> <quelldatei>.cpp
GNU-C-Compiler
gcc -o <executable> <quelldatei>.c
pthreads: Bibliothek libpthread.so für Threads einbinden und alle c-Module zu einer Applikation linken.
gcc *.c -o <executable> -combine -pthread -D__DEBUG__
gcc -g -o myprog mainprog.o somefunctions.o -lpthreads -L/home/user1/libs
2. Relevante Themen
- Build
- GnuProfiling Profiling
- Inline Assebler unter Linux auf den IBM-Seiten
- Informationen zu GCC (gcc und g++) der Universität Bayreuth
- SseMitGcc SSE
3. Quellprogramme
GNU-C-Programm
#include <stdio.h>
int main(int argc, char** argv)
{
//...
return 0;
}
int main(int argc, char** argv)
{
//...
return 0;
}
GNU-C++-Programm
#include <cstdio>
int main(int argc, char* argv[])
{
//...
return 0;
}
int main(int argc, char* argv[])
{
//...
return 0;
}
4. GCC-Parameter
Ein Kompletter Überblick über die Optionen des GCC auf gcc.gnu.org
Getting familiar with gcc parameters
- GccArchitectureSpecificOptions Architecture-Specific-Options (march, mcpu, mfpu)
- GccParameterCodeoptimierung Parameter für die Codeoptimierung (O1, O2, O3 ...)
- SseMitGcc SSE
Flag | Bedeutung |
---|---|
-O | Optimierungsstuffe --> GccParameterCodeoptimierung Parameter für die Codeoptimierung |
-c | Nur Kompilieren; erzeugt Objekt-Dateien mit der Endung .o |
-S | Assemblercode erzeugen, um zu sehen was der Compiler eigentlich produziert. |
-o <Datei> | Die Ausgabe in eine bestimmte Datei ausgeben |
-funsigned-char -funsigned-char | Der Datentyp char wird als signed char bzw. unsigned char angenommen, wenn es eine Bedeutung in einem Programm spielt. |
-w | Alle Warnungen unterdrücken. |
-Wall | Alle Warnungen ausgeben. |
-g | Erzeugt Debuginformationen, je nachdemwas welcher Standarddebugger eingestellt ist. |
-ggdb | Erzeugt Debuginformationen für den GnuDebugger GDB. |
-gcoff -gxcoff | Erzeugt Debuginformationen im coff-Format bzw. xcoff-Format. |
-p | Erzeugt Profiling-Informationen für das Programm prof. |
-pg | Erzeugt Profiling-Informationen für das Programm gprof. |
-a | Erzeugt Profiling-Informationen um feststellen zu könne, wie häufig verschiedene Blöcke ausgeführt wurden. |
-include | Eine Datei vorher bearbeiten, als würde Sie zum Projekt dazugehören. |
-d<Label> | Ein Präprozessor-Label definieren. |
-dM | Gibt alle #defines aus. |
-l<Bibliothekenname> | Linkeroption: Gibt an, welche LibraryPage Bibliothek eingebunden werden soll |
-L<Verzeichis> | Weiterer Suchpfad für Bibliotheken |
-march=<Arch> | Native Code für eine bestimmten Prozessor generieren z.B. -march=pentium3 oder -march=armv6j |
-mtune=<cpu-type> | athlon, .... Intel 386 and AMD x86-64 Options |
-fshort-enums | Kleineren Datentyp für enum, sonst immer integer |
-fshort-double | Ersetze double durch float |
Siehe auch • • • •