% cc [ option ] ... file ...Npr.
% cc -O3 -c a.c - prevodi "a.c" u "a.o" uz optimizaciju trećeg nivoa % cc -O3 -c b.c - prevodi "b.c" u "b.o"uz optimizaciju trećeg nivoa % cc -O3 -c main.c - prevodi "main.c" u "main.o" uz optimizaciju trećeg nivoa % cc -o prog a.o b.o main.o -lm - linkuje "a.o", "b.o" i "main.o" u "prog" uz linkovanje dodatne "math" bibilioteke % prog - izvršava program "prog"Olakšavanje gornjeg procesa moguće je korišćenjem "make" podsistema, u kom slučaju se kreira "makefile" koji bi imao sledeći izgled:
% cat >makefile CFLAGS = -O2 OBJECTS = a.o b.o main.o all : prog prog : $(OBJECTS) cc -o prog $(OBJECTS) -lm <Ctrl-D> % _Te se automatsko prevođenje vrši navođenjem naredbe "make":
% makeČešće korišćene opcije "c" prevodioca su:
-ansi - regulišu kompatibilnost sa standardom -ansiposix (za detaljniji prikaz pogledadi "man cc") -cckr -xansi -common -signed - "char" tip podataka će se smatrati da je "signed" -c - izvorni kod se samo prevodi (ne i linkuje) -pca - pokreće "pca" preprocesor koji automatski otkriva paralelizme u izvornom kodu. Ova opcija takođe uključuje "-mp" (multiprocesing) opciju. -64 - generišu se 64-bitni objekti. Ovo podrazumeva -mips4 -32 - generišu se 32-bitni objekti. Ovo podrazumeva -mips1. -mips1 - objektni kod se generiše instrukcijskim setom RISC R2000/R3000 arhitekture Ovo podrazumeva -32. -mips2 - objektni kod se generiše instrukcijskim setom MIPS II arhitekture (MIPS I + R4000 specifične ekstenzije) Ovo podrazumeva -32. -mips3 - objektni kod se generiše instrukcijskim setom pune MIPS III arhitekture (npr. R4000). Ovo podrazumeva -64. -mips4 - objektni kod se generiše instrukcijskim setom pune MIPS IV arhitekture (npr. R8000). Ovo podrazumeva -64. Inače, ovo je default opcija. -o output - imenuje izlazni izvršni program ("a.out" ako se ne navede) -O0 - isključivanje svih optimizacija. Ovo je default opcija -O1 - uključivanje lokalnih optimizacija koje mogu biti urađene brzo -O ili -O2 - uključivanje proširene optimizacije -O3 - uključivanje agresivne optimizacije -S - izvorni kod se prevodi i dobija program u asembleru (sa sufiksom ".s") -Dname=def -Dname - definicija makro preprocesora. Kao da se nalazi u izvornom kodu #define "name" "def". Ako se navede sam -Dname, smatra se da je dodeljena vrednost "1". -Uname - ukljanjanje inicijalne vrednosti makro-a preprocesora -Idir - uključuje "dir" u putanju u kojoj se pretražuju `#include' datoteke čija imena ne počinju sa `/'
% f77 [ option ] ... file ...Npr.
% f77 -O3 -c a.f - prevodi "a.f" u "a.o" uz optimizaciju trećeg nivoa % f77 -O3 -c main.f - prevodi "main.f" u "main.o" uz optimizaciju trećeg nivoa % f77 -o prog a.o main.o - linkuje "a.o" i "main.o" u "prog" % prog - izvršava program "prog"Da bi se brzina SGI Power Challenge-a iskoristila nije dovoljno samo prevesti svoj fortranski program, vec je, na žalost, potrebno program malo i prilagoditi za njegovu 64-bitnu arhitekturu. Time se mogu postići ubrzanja i do 10 puta!
Fortran na SGI Power Challenge-u, ukoliko se ne koristi opcija -32, podrazumeva 64-bitnu dužinu integer varijabli (INTEGER*8). Ukoliko vaš stari kod podrazumeva neadekvatne veličine podataka (recimo, putem COMMON zona), to može dovesti do netačnih rezultata.
Trivijalna intervencija koja može da spase stvar je zamena deklaracije INTEGER sa INTEGER*4. Implicitne deklaracije (I,J,K..N) u DIMENSION naredbi se moraju takođe zameniti eksplicitnom deklaracijom INTEGER*4.
Kod DOUBLE PRECISION nema problema, jer je on već 64-bitni. FLOAT bi trebalo takođe zameniti sa DOUBLE PRECISION, radi brzine.
Pri prevođenju programa koji se iole duze izvršavaju treba staviti opciju -O3.