Καλησπέρα σας,
Κατ' αρχήν να επισημάνω πως έχω σχετικά παλιό υπολογιστή (διπύρηνο αλλά των
32 bit).
Επίσης για λόγους που έχουν να κάνουν με δουλειά έχω μείνει εσκεμμένα στην έκδοση
11.04 (natty) του Ubuntu με έκδοση πυρήνα
2.6.38-16-generic και δεν έχω μεταβεί σε κάποια νεότερη.
Αυτά τα χαρακτηριστικά είναι λογικά η πηγή των δεινών μου...
Κατ' αρχήν η εγκατάσταση του PIN ολοκληρώθηκε κανονικά (για να το επιβεβαιώσω χρειάστηκε να εκτελέσω το pin με το παράδειγμα παραλλαγμένο ως "
./pin.sh -injection child -t ./source/tools/ManualExamples/obj-ia32/inscount0.so -o ls.inscount0.output -- /bin/ls -aF").
Κατόπιν, με την εκτέλεση της εντολής "
sudo apt-get update" έλαβα κάποια αποτελέσματα του στιλ:
Err http://gr.archive.ubuntu.com natty/main Sources
404 Not Found
Err http://security.ubuntu.com natty-security/restricted Sources
404 Not Found [IP: 2001:67c:1560:8001::11 80]
W: Failed to fetch http://http//download.virtualbox.org/virtualbox/debian/dists/natty/InRelease κλπ.
Προχωρώντας στην επόμενη εντολή "sudo apt-get install make g++ libx11-dev libxext-dev libxaw7 \
x11proto-xext-dev libglu1-mesa-dev libxi-dev libxmu-dev"
μετά από κάποιες σωστές εγκαταστάσεις έλαβα τις παρακάτω επισημάνσεις:
You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
libglu1-mesa-dev : Depends: libgl1-mesa-dev but it is not going to be installed or
libgl-dev
libxi-dev : Depends: xorg-sgml-doctools (>= 1:1.5) but it is not going to be installed
virtualbox-4.1 : Depends: libqt4-network (>= 4:4.5.3) but it is not going to be installed
Depends: libqt4-opengl (>= 4:4.7.0~rc1) but it is not going to be installed
Depends: libqtcore4 (>= 4:4.7.0~beta1) but it is not going to be installed
Depends: libqtgui4 (>= 4:4.7.0~beta1) but it is not going to be installed
Recommends: libsdl-ttf2.0-0 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).
Να σημειώσω ότι παρόμοιες απαντήσεις είχα λάβει και με την εντολή της αρχικής εκφώνησης της άσκησης όπου κάποιες βιβλιοθήκες ήταν διαφορετικές.
Μετά την σχετική προτροπή εκτέλεσα την εντολή "apt-get -f install" οπότε έλαβα:
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
κλπ (δεν αντιγράφω όλο το κατεβατό).
Ευχόμενος να μπορώ να προχωρήσω παρ' όλα αυτά, εκτέλεσα την "./bin/parsecmgmt -a build -c gcc-serial -p blackscholes bodytrack canneal facesim ferret fluidanimate freqmine raytrace swaptions streamcluster" όπου το αρχικό build των packages φαινόταν να ολοκληρώνεται κανονικά αλλά στο τέλος έλαβα
checking pkg-config files for X11 are available... yes
checking for XLIBGL... yes
checking for GLW... yes
checking for GLUT... configure: error: Package requirements (x11 xmu xi) were not met:
No package 'xi' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables GLUT_CFLAGS
and GLUT_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
[PARSEC] Error: 'env ./configure --with-driver=xlib --enable-glut --enable-static --disable-shared --prefix=/home/giannis/parsec-3.0/pkgs/libs/mesa/inst/i686-linux.gcc-serial' failed.
Τα επόμενα βήματα σχετικά με το "cslab_create_parsec_workspace.sh" κύλισαν κανονικά (δημιουργήθηκε ο φάκελος parsec_workspace με τα εκτελέσιμα και με την εκτέλεση της εντολής "cat cmds_simlarge.txt" έλαβα τα αποτελέσματα που αναγράφονται και στην εκφώνηση).
Κατόπιν όρισα την μεταβλητή περιβάλλοντος LD_LIBRARY_PATH με την τροποποίηση "i686-linux.gcc-serial" καθώς είδα ότι υπήρχε αυτός ο φάκελος αντί του "amd64-linux.gcc" όπου και φαίνεται πως έγινε κανονικά.
Όσον αφορά την μεταγλώττιση του cslab_cache.cpp, δίνοντας "PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-intel64/cslab_cache.so" έλαβα
make: *** No rule to make target `obj-intel64/cslab_cache.so'. Stop.
Αντιλαμβανόμενος (νομίζω...) τι συνέβαινε δημιούργησα φάκελο με την ονομασία "obj-ia32" μέσα στον φάκελο "pintool" και εκτέλεσα ξανά την εντολή παραλλαγμένη ως "PIN_ROOT=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux make obj-ia32/cslab_cache.so"
Η μεταγλώττιση φαίνεται πως πέτυχε και στον φάκελο "obj-ia32" δημιουργήθηκαν τα αρχεία cslab_cache.o και cslab_cache.so. Στο terminal έλαβα
g++ -DBIGARRAY_MULTIPLIER=1 -Wall -Werror -Wno-unknown-pragmas -fno-stack-protector -DTARGET_IA32 -DHOST_IA32 -DTARGET_LINUX -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/gen -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/components/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/include -I/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/tools/InstLib -O3 -fomit-frame-pointer -fno-strict-aliasing -c -o obj-ia32/cslab_cache.o cslab_cache.cpp
g++ -shared -Wl,--hash-style=sysv -Wl,-Bsymbolic -Wl,--version-script=/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/source/include/pin/pintool.ver -o obj-ia32/cslab_cache.so obj-ia32/cslab_cache.o -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/lib-ext -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/ia32/runtime/glibc -L/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/extras/xed-ia32/lib -lpin -lxed -lpindwarf -ldl
Προσπαθώντας πλέον να χρησιμοποιήσω το cslab_cache pintool με την εντολή "/home/giannis/pin-2.14-71313-gcc.4.4.7-linux/pin.sh -t /home/giannis/advcomparch-2015-16-ex1-helpcode/pintool/obj-ia32/cslab_cache.so -o my_output.out -L1c 64 -L1a 8 -L1b 64 -L2c 256 -L2a 8 -L2b 64 -- /home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes 1 /home/giannis/parsec-3.0/parsec_workspace/inputs/in_64K.txt prices.txt"
έλαβα
E: Attach to pid 4209 failed.
E: The Operating System configuration prevents Pin from using the default (parent) injection mode.
E: To resolve this, either execute the following (as root):
E: $ echo 0 > /proc/sys/kernel/yama/ptrace_scope
E: Or use the "-injection child" option.
E: For more information, regarding child injection, see Injection section in the Pin User Manual.
E:
Killed
Προσθέτοντας την παράμετρο "-injection child" και εκτελώντας ξανά την προηγούμενη εντολή έλαβα:
/home/giannis/parsec-3.0/parsec_workspace/executables/blackscholes : No such file or directory
Γενικώς ο φάκελος executables είναι άδειος οπότε φαντάζομαι πως δεν έχουν δημιουργηθεί τα απαιτούμενα εκτελέσιμα.
Τι έχει συμβεί και πως το ξεπερνάω; Έχει σχέση με τις βιβλιοθήκες που δεν εγκαταστάθηκαν ή με την δημιουργία των packages; Μήπως αφού έχω παλαιότερο σύστημα έπρεπε να χρησιμοποιήσω κάποια παλαιότερη έκδοση του PIN και όχι την 71313;
Γενικώς οποιαδήποτε βοήθεια προς εμάς που έχουμε 32-bit μηχανήματα ή/και παλαιότερη έκδοση Linux θα ήταν ιδιαίτερα ευπρόσδεκτη!
Σας ευχαριστώ - με εκτίμηση,
Γιάννης Χορτομάνης