TRIQS / triqs_0.x

DEPRECATED -- This is the repository of the older versions of TRIQS
Other
11 stars 9 forks source link

Compilation problem with hdf5 #128

Closed aichhorn closed 11 years ago

aichhorn commented 11 years ago

I found a problem with compilation of branch 1.0 and hdf5. Using gcc 4.6.3 and hdf5 1.8.7, I get the following error when linking:

Linking CXX executable fourier1 ../../../triqs/libtriqs.so: undefined reference to `H5LTfind_attribute' collect2: ld gab 1 als Ende-Status zurück make[2]: * [test/triqs/gf/fourier1] Fehler 1 make[1]: * [test/triqs/gf/CMakeFiles/fourier1.dir/all] Fehler 2

Same happens for gfv2, block, and other executables. Any idea? Maybe the hdf5 version?

parcollet commented 11 years ago

Hi, It misses the hdft_hl (high level) lib. Strange, it is normally detected. Did you compile hdf5 without hl ? you should have libhdf5_hl somewhere...

aichhorn commented 11 years ago

Hi, Yes, the libhdf_hl libraries are there. I realized one thing: On my laptop the cmake is version 2.8.7, and the hdf5 detection finds the _hl libs. At the cluster where I am installing TRIQS I have cmake 2.8.6, and the hdf5 detection of cmake does NOT list the _hl libs:

-- Found HDF5: debug;/usr/lib64/libhdf5_cpp.so;debug;/usr/lib64/libhdf5.so;debug;/usr/lib64/libz.so;debug;/usr/lib64/librt.so;debug;/usr/lib64/libm.so;optimized;/usr/lib64/libhdf5_cpp.so;optimized;/usr/lib64/libhdf5.so;optimized;/usr/lib64/libz.so;optimized;/usr/lib64/librt.so;optimized;/usr/lib64/libm.so

Although there are all the _hl files in /usr/lib64. Is it a problem that cmake is too old, and i have to compile cmake 2.8.7 myself????

parcollet commented 11 years ago

Ah, I remember now... On old versions of cmake (e.g. 2.8.2), you dont have to ask for HL to have it detected (you can NOT ask it) and in later versions (e.g. 2.8.6) you HAVE to ask for it.

We corrected that in cmake/FindTRIQS_dep_libs.cmake

--> // on weiss, it is 2.8.2 and we should not put HL, on 12.04 we need to put it... if ( ${CMAKE_VERSION} VERSION_LESS "2.8.7") # CHECK THIS BOUND, where are the cmake changelogs ?? find_package(HDF5 REQUIRED C CXX ) else(${CMAKE_VERSION} VERSION_LESS "2.8.7") find_package(HDF5 REQUIRED C CXX HL ) endif(${CMAKE_VERSION} VERSION_LESS "2.8.7")

However, I had no clue in which version this change appeared, so the 2.8.7 here is certainly not correct, and I had no time to search for this in the change logs.

Try to change this bound to 2.8.6 ?

More precisely : compare the 2 FindHDF5.cmake of both versions at the beginning of the file, in comment, you have what is detected, which variables, and so on. Does 2.8.6 already support HL ?

aichhorn commented 11 years ago

I checked the FindHDF5.cmake module for version 2.8.6, and it supports HL. Changing 2.8.7 to 2.8.6 in cmake/FindTRIQS_dep_libs.cmake did the job. Compiled and tests passed.

parcollet commented 11 years ago

Did you commit it ?

aichhorn commented 11 years ago

Yes, right now.