micmacIGN / micmac

Free open-source photogrammetry software tools
http://micmac.ensg.eu
Other
718 stars 153 forks source link

Compiling on CentOS 7.6, put_time issue #204

Closed fboschetty closed 2 years ago

fboschetty commented 2 years ago

I'm having issues compiling MicMac on a linux server running CentOS 7.6: LSB Version: :core-4.1-amd64:core-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.6.1810 (Core) Release: 7.6.1810 Codename: Core

make encounters an error at around 50%:

[ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiepTri/cHomolPackTiepTri.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiepTri/MultTieP.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiepTri/cResulCorrelTieTri.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cAppliTiepHistorical.cpp.o /nfs/a283/homes/eefob/Villarrica/micmac/src/uti_phgrm/TiePHistorical/cAppliTiepHistorical.cpp: In function ‘int MatchOneWay(std::vector&, std::vector, std::vector, bool, std::vector<Pt2d >, Pt2di, bool, bool, double, bool, double, double, double, double)’: /nfs/a283/homes/eefob/Villarrica/micmac/src/uti_phgrm/TiePHistorical/cAppliTiepHistorical.cpp:2056:18: error: ‘put_time’ is not a member of ‘std’ std::cout << std::put_time(std::localtime(&t1), "%Y-%m-%d %H:%M:%S") << std::endl; ^ /nfs/a283/homes/eefob/Villarrica/micmac/src/uti_phgrm/TiePHistorical/cAppliTiepHistorical.cpp:2166:18: error: ‘put_time’ is not a member of ‘std’ std::cout << std::put_time(std::localtime(&t2), "%Y-%m-%d %H:%M:%S") << std::endl; ^ [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cInterEp_SuperGlue.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cInterEp_MergeTiePt.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cInterEp_GetPatchPair.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cInterEp_CreateGCPs.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cInterEp_DSM_Equalization.cpp.o [ 50%] Building CXX object src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cInterEp_GetOverlappedImages.cpp.o make[2]: [src/CMakeFiles/elise.dir/uti_phgrm/TiePHistorical/cAppliTiepHistorical.cpp.o] Error 1 make[2]: Waiting for unfinished jobs.... make[1]: [src/CMakeFiles/elise.dir/all] Error 2 make: [all] Error 2

This is after running cmake with the following flags:

cmake .. -DWITH_QT5=1 -DWERROR=0 -DWITH_CCACHE=OFF

Can you help?

Felix

fboschetty commented 2 years ago

On further investigation it seems that the header to declare put_time (iomanip) isn't included somewhere. I know nothing about C++ so I don't know where it would be declared.

luc-girod commented 2 years ago

Hi! Put_time seems to be from std, which is the basic library. What compiler are you using?

You can find out by running : gcc --version

fboschetty commented 2 years ago

Hi!

Looks like i'm running gcc version 4.8.5-36 which is from 2015. This might well be the problem.

When I googled the error message I found the following: https://stackoverflow.com/questions/45070588/c11-put-time-is-not-a-member-of-std-on-modern-g

Felix

fboschetty commented 2 years ago

Hi, So upgrading to a more modern gcc has solved the previous issue, but I now have the following. The compile reaches 100% and then encounters this error:

Built target PoissonRecon Built target to8Bits Built target SurfaceTrimmer [100%] Built target elise Linking CXX executable mm3d Linking CXX executable SaisieQT /lib64/../lib64/libSM.so: undefined reference to uuid_generate@UUID_1.0' /lib64/../lib64/libSM.so: undefined reference touuid_unparse_lower@UUID_1.0' collect2: error: ld returned 1 exit status make[2]: [src/saisieQT/SaisieQT] Error 1 make[1]: [src/saisieQT/CMakeFiles/SaisieQT.dir/all] Error 2 make[1]: Waiting for unfinished jobs.... /lib64/../lib64/libSM.so: undefined reference to uuid_generate@UUID_1.0' /lib64/../lib64/libSM.so: undefined reference touuid_unparse_lower@UUID_1.0' collect2: error: ld returned 1 exit status make[2]: [src/CBinaires/mm3d] Error 1 make[1]: [src/CBinaires/CMakeFiles/mm3d.dir/all] Error 2 make: [all] Error 2

Any ideas?

luc-girod commented 2 years ago

Hei, It looks like the issue arrises when the QT tools get compiled? What QT version are you using? I remember some time ago we had issues with forward compatibility. 5.12 was the cutoff? 5.10 worked for sure.

fboschetty commented 2 years ago

Ah, I am using 5.12.7!!! I'll try downgradingto 5.10 and see if that fixes it. Thanks!

luc-girod commented 2 years ago

Did it work with 5.10?

fboschetty commented 2 years ago

Managed to get it to work on 5.9.7