[Advcomparch] Πρόβλημα στο build του facesim
Dimitris Siakavaras
jimsiak at cslab.ece.ntua.gr
Wed Mar 29 11:38:43 EEST 2017
Τελικά το πρόβλημα έχει να κάνει με νεότερες εκδόσεις του 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 at lists.cslab.ece.ntua.gr
>> http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
>
> _______________________________________________
> Advcomparch mailing list
> Advcomparch at lists.cslab.ece.ntua.gr
> http://lists.cslab.ece.ntua.gr/mailman/listinfo/advcomparch
More information about the Advcomparch
mailing list