För att kompilera detta program om vi antar att filen med programmet heter hello.c
Kod: Markera allt
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}
Kod: Markera allt
gcc hello.c
Kod: Markera allt
./a.out
hello world
Kod: Markera allt
gcc hello.c -o hello
För att göra exemplet lite mer avancerat så blandar vi in en till fil. Om vi har två filer en som heter hello.c och en som heter print.c
Kod: Markera allt
hello.c ser ut såhär
#include <stdio.h>
void print_hello();
int main() {
printf("hello world\n");
print_hello();
return 0;
}
print.c ser ut såhär
#include <stdio.h>
void print_hello() {
printf("hello world, again...\n");
}
Kod: Markera allt
gcc hello.c print.c -o hello
Kod: Markera allt
./hello
hello world
hello world, again...
Kod: Markera allt
#include <math.h>
#include <stdio.h>
int main() {
printf("sin(0.5)%f\n",sinf(0.5));
return 0;
}
Kod: Markera allt
gcc math.c -o sinus
/tmp/cc4BKYrc.o: In function `main':
math.c:(.text+0x1a): undefined reference to `sinf'
collect2: ld returned 1 exit status
Exit 1
Kod: Markera allt
gcc -lm math.c -o sinus
./sinus
sin(0.5)0.479426
För att länka mot ett bibliotek som inte finns i någon standard mapp så kan man använda flaggan -L/sökväg/ samma sak gäller för header-filer om man anger -I/sökväg så kommer gcc att söka efter headerfiler i denna mapp också.
Två andra flaggar som också är användbara är:
-D och -g.
-D används för att definiera ett värde, te.x. om vi har denna kod
Kod: Markera allt
#include <stdio.h>
int main() {
printf("hello world\n");
#ifdef AGAIN
printf("hello world again!\n");
#endif
return 0;
}
Kod: Markera allt
gcc def.c -o def
hello world
men om det kompileras med flaggan -DAGAIN
Kod: Markera allt
gcc -DAGAIN def.c -o def
hello world
hello world again!
Detta är _väldigt_ smidigt om man vill ha spårutskrifter ibland och ibland inte.
Flaggan -g kommer att skapa en körbar binär som är kompilerad för debuggning. Vilket innebär att man kan använda gdb för att stega igenom koden under exekveringen.
Flaggarn -Wall är mycket bra att använda när man skriver program då denna ger mera varningar!
Så när jag kompilerar xwmpager så använder jag dessa flaggor.
Kod: Markera allt
gcc -lX11 -Wall -I. -std=gnu99 main.c drawing.c xcomm.c -o xwmpager