Τελικά το πρόβλημα έχει να κάνει με νεότερες εκδόσεις του gcc (συγκεκριμένα, έκανα reproduce το error με gcc 6.3.1). Για να μπορέσετε να κάνετε compile το facesim σε αυτήν την περίπτωση πρέπει να κάνετε τις παρακάτω αλλαγές σε δύο αρχεία:
Αρχείο parsec-3.0/pkgs/apps/facesim/src/Public_Library/Read_Write/FILE_UTILITIES.h: γραμμή 73: return std::ifstream (filename.c_str()) != 0; -----> return std::ifstream(filename.c_str()).good(); γραμμή 83: return std::ofstream (filename.c_str()) != 0; -----> return std::ofstream(filename.c_str()).good();
Αρχείο parsec-3.0/pkgs/apps/facesim/src/Public_Library/Read_Write/FILE_UTILITIES.cpp: γραμμή 101: return std::ifstream (dirname.c_str()) != 0; -----> return std::ifstream(dirname.c_str()).good();
Το πρόβλημα έχει να κάνει με το γεγονός ότι ο τελεστής '!=' δεν μπορεί να εφαρμοστεί σε δύο τελεστέους όπου ο ένας είναι τύπου std::ifstream και ο δεύτερος int (το 0). Το κατάλληλο μήνυμα σφάλματος εμφανιζόταν στην έξοδο του gcc πριν από το κομμάτι που έκανε append στο email του ο συνάδελφος και ανέφερε: Read_Write/FILE_UTILITIES.cpp:101:41: error: no match for 'operator!=' (operand types are 'std::ifstream {aka std::basic_ifstream<char>}' and 'int')
-- Δημήτρης
On 29/03/2017 10:19 πμ, Dimitris Siakavaras wrote:
Καλημέρα,
Τι λειτουργικό έχεις στο μηχάνημά σου; Ποιά έκδοση του gcc έχεις ($ gcc --version);
-- Δημήτρης
On 28/03/2017 02:25 μμ, Babis Kardaris wrote:
Καλησπέρα,
Ενώ έχω κάνει κανονικά compile τα υπόλοιπα 9 εργαλεία, το facesim αποτυγχάνει. Η λύση που έδωσε ο συμφοιτητής σε προηγούμενα email της λίστας, δε εφαρμόζεται σε εμένα αφού είχα κάνει τη συγχώνευση των αρχείων με την εντολή tar, όπως ακριβώς παρουσιάζεται στην εκφώνηση της άσκησης.
Η εκτέλεση της εντολής ./bin/parsecmgmt -a build -c gcc-serial -p facesim μέσα στο directory /parsec-3.0 εμφανίζει στο τέλος τα παρακάτω:
make[2]: *** [/home/wolverine/Documents/Ypsilon/AdvCompArch/parsec-3.0/pkgs/apps/facesim/obj/amd64-linux.gcc-serial/Public_Library/Makefile.common:407:
obj/Collisions_And_Interactions/COLLISION_BODY_LIST_3D.o] Error 1 make[2]: Leaving directory '/home/wolverine/Documents/Ypsilon/AdvCompArch/parsec-3.0/pkgs/apps/facesim/obj/amd64-linux.gcc-serial/Public_Library'
make[1]: *** No rule to make target '/home/wolverine/Documents/Ypsilon/AdvCompArch/parsec-3.0/pkgs/apps/facesim/obj/amd64-linux.gcc-serial/lib/libPhysBAM.a',
needed by 'facesim'. Stop. make[1]: Leaving directory '/home/wolverine/Documents/Ypsilon/AdvCompArch/parsec-3.0/pkgs/apps/facesim/obj/amd64-linux.gcc-serial/Benchmarks/facesim'
make: *** [Makefile:16: all] Error 2 [PARSEC] Error: 'env version=serial PHYSBAM=/home/wolverine/Documents/Ypsilon/AdvCompArch/parsec-3.0/pkgs/apps/facesim/obj/amd64-linux.gcc-serial
CXXFLAGS=-O3 -g -funroll-loops -fprefetch-loop-arrays -fpermissive -fno-exceptions -static-libgcc -Wl,--hash-style=both,--as-needed -DPARSEC_VERSION=3.0-beta-20150206 -DENABLE_PARSEC_HOOKS -I/home/wolverine/Documents/Ypsilon/AdvCompArch/parsec-3.0/pkgs/libs/hooks/inst/amd64-linux.gcc-serial/include
-fexceptions /usr/bin/make' failed.
Τι μπορεί να συμβαίνει;
Ευχαριστώ _______________________________________________ Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
Advcomparch mailing list Advcomparch@lists.cslab.ece.ntua.gr http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch