Den vil jeg prøve, tak Men jeg så til min time at man kunne kompilere hvert objekt for sig først i terminalen, hvorefter man linker dem sammen, også i terminalen.
Det er dét makefilen gør. Hvis du ser i det output jeg postede, så starter makefilen med følgende:
g++ -ggdb -Wall -c -o src/a.o src/a.cpp
g++ -ggdb -Wall -c -o src/b.o src/b.cpp
g++ -ggdb -Wall -c -o src/c.o src/c.cpp
g++ -ggdb -Wall -c -o src/main.o src/main.cpp
Der compiler jeg fire cpp filer til objektfiler af samme navn.
Derefter lænker makefilen de fire objekt filer sammen:
g++ -ggdb -o my_program src/a.o src/b.o src/c.o src/main.o
src biblioteket bliver oprettet takket være makefilen eller er det et standard bibliotek?
Nej, det er noget jeg har fundet på :-)
Det er en håndskrevet Makefil, så opret bare et 'src' bibliotek i dit projekt.
Når i siger linke sammen, mener i så er symbolic link. Eller hvad mener i med link?
Nej, det er noget andet.
Compileren oversætter din C++ kode én fil ad gangen til maskinkode, men udelader adresser på funktioner, som ikke ligger i den pågældende fil.
Lænkeren tager resultatet fra compileren (objektfilerne) og "lænker" dem sammen til én eksekverbar fil eller et library. Her findes alle de tidligere undladte referencer, som indsættes de rigtige steder.
Så resultatet af compileringen er objektfiler, og resultatet af lænkningen er et program...sådan ca. :-)