Exercise+2.2

=Exercise 1.= Startede med at kopier vores "hello world" source code, til en ny mappe. Dette gjorde vi ved at skrive cp. toc eks. (for at gå tilbage i stien, til mappen mup1, og gå frem til opg_2, skrives ../../opg_2

nu ligger filen i en ny mappe og den skal kompileres igen, men denne gang til en arm-processer og ikke en intel 386 processer arkitektur. Dette gøres ved at skrive: arm-none-linux-gnueabi-g++ -o  eks. arm-none-linux-gnueabi-g++ -o hello-target hello.cpp

for at tjekke filen er blevet korrekt kompileret, kan det tjekkes ved at skrive: file eks. file hello-target

Herefter sendes filen ved hjælp af vores shell script, som blev lavet i exercise 2.1.

cp2tgt hello-target conn2tgt - for at komme på target ./hello-target herefter udskrives : Hello World

=Exercise 2= Kopierede 'makefile', på samme måde som vi kopirede source code filen i exercise 1. Herefter kopierede vi makefile til makefile_target i samme mappe eks. cp makefile makefile_target

for at ændre makefile_target fra at kompilere intel til arm processer, skulle vi ind i gedit. gedit makefile_target

herinde ændrede vi CC=g++ til CC=arm-none-linux-gnueabi-g++ samt EXECUTABLE=Duus til EXECUTABLE=Duus-target

For at bygge vores program bruger vi makefile -f make -f makefile - bruges til intel 386 processer make -f makefile_target - bruges til arm processer

imellem brug af make, skal man huske at rydde op. hertil bruges make clean. dette gøres for at slette .o filen, da den skal bygges til den enkelte processer, og ikke kan bruges til andre.

Tilsidst er programmet blevet kørt henholdsvis for host og target. host => ./Duus target => Filen sendes til target ved hjælp af vores shell script, som blev lavet i exercise 2.1. cp2tgt Duus-target conn2tgt - for at komme på target ./Duus-target

=Exercise 3= Exercise 3 minder meget om exercise 2. Starter med at kopier hele mappen fra exercise 1.3 til den nye. Gøres ved: cp -r Herefter kopierede vi makefile til makefile_target i samme mappe eks. cp makefile makefile_target

For at ændre makefile_target fra at kompilere intel til arm processer, skulle vi ind i gedit. gedit makefile_target

herinde ændrede vi CC=g++ til CC=arm-none-linux-gnueabi-g++ samt EXECUTABLE=duus til EXECUTABLE=duus-target

For at bygge vores program bruger vi makefile -f make -f makefile - bruges til intel 386 processer make -f makefile_target - bruges til arm processer

imellem brug af make, skal man huske at rydde op. hertil bruges make clean. dette gøres for at slette .o filen, da den skal bygges til den enkelte processer, og ikke kan bruges til andre.

Tilsidst er programmet blevet kørt henholdsvis for host og target. host => ./duus target => Filen sendes til target ved hjælp af vores shell script, som blev lavet i exercise 2.1. cp2tgt duus-target conn2tgt - for at komme på target ./duus-target

=Exercise 4= I opgave 4, skal vi oprette et konfiguration til "Target", så Eclips kan build det til target, ligesom det kan lave en "Debug" og "Release" Dette gøres ved at højre klikke på projektet(2_4) => build configuration => manage. herinde trykke "New", skriv name. sæt default configuartion til release. tryk ok.

tryk på project (i kommando-linjen) => properties herinde ændres c++ build => settings til arm-none-linux-gnueabi-g++ samt herunder ændres GCC C+ linker også til arm-none-linux-gnueabi-g++

for at test trykkes på hammeren, herefter oprette Eclips en mappe, med en release til target. Den eksekvererbar fil hedder den samme som projektet, i vores tilfælde 2_4. Når det er gjort skal filen overføres til target. cp2tgt 2_4 conn2tgt - for at komme på target ./2_4

=Exercise 5= I opgave 5 skal vores 2 makefile (host/target) omskrives således, at vores makefile oprette den eksekvererbar i en undermappe, både for host og target. Derudover skal man kunne køre en "clean" kommando, som fjerner *.o filer og den eksekvererbar fil, men kun for enten host eller target. make - f makefile clean: må ikke fjerne target make - f makefile_target clean: må ikke fjerne host vores kode inklusiv kommentar til ny ting ser således ud.

Host
code SOURCES=hello.cpp OBJECTS=${SOURCES:.cpp=.o} EXECUTABLE=Duus CC=g++            // Navn på compiler OBJDIR= HOST      // Navn på mappe

build: ${OBJECTS} test -d ${OBJDIR} || mkdir ${OBJDIR}          // tjekker om der findes en mappe ved det navn, eller oprettes det ${CC} -o ${OBJDIR}/${EXECUTABLE} ${OBJECTS}    // opretter den eksekvererbar fil, med den angivet compiler, bliver lagt i den angivet mappe, og bruger .o filen

hello.o : hello.cpp ${CC} -c hello.cpp -o hello.o

clean: rm ${OBJECTS}      // Sletter .o filen rm -r ${OBJDIR}    // Sletter mappen, og fil help: @echo "Hjælp" code

Target
code SOURCES=hello.cpp OBJECTS=${SOURCES:.cpp=_target.o}     //  cpp-filen skal omdannes og omdøbes til en _target.o-fil. EXECUTABLE=Duus-target CC=arm-none-linux-gnueabi-g++    // Navn på compiler OBJDIR=TARGET      //navn på mappe

build: ${OBJECTS} test -d ${OBJDIR} || mkdir ${OBJDIR}          // tjekker om der findes en mappe ved det navn, eller oprettes den ${CC} -o ${OBJDIR}/${EXECUTABLE} ${OBJECTS}   // opretter den eksekvererbar fil, med den angivet compiler, bliver lagt i den angivet mappe, og bruger .o filen

hello_target.o : hello.cpp ${CC} -c hello.cpp -o hello_target.o    // angiver hvilken compiler der skal bruges for at etablere hello_target.o.                                             // hvilken cpp.fil der skal compileres, og tilsidst angives navnet på den o-fil der skal linke til den eksekverbar fil.

clean: rm ${OBJECTS}      // Sletter .o filen rm -r ${OBJDIR}    // Sletter mappen, og fil help: @echo "Hjælp" code