Question: LoRDEC : Compilation error
1
gravatar for Carob
3.6 years ago by
Carob50
France
Carob50 wrote:

I tryed to compile the version LoRDEC-0.5.3-Source/ on my linux server. I have downloaded the version with the gatb-core included.

I obtain this error message :

/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp: In function ‘int correct_one_read(gatb::core::bank::Sequence, char*, gatb::core::debruijn::impl::Graph, gatb::core::system::IFile*, gatb::core::system::ISynchronizer*, int)’:
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:622: erreur: template argument for ‘template<class OutEdgeListS, class VertexListS, class DirectedS, class VertexProperty, class EdgeProperty, class GraphProperty, class EdgeListS> class boost::adjacency_list’ uses local type ‘correct_one_read(gatb::core::bank::Sequence, char*, gatb::core::debruijn::impl::Graph, gatb::core::system::IFile*, gatb::core::system::ISynchronizer*, int)::Path’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:622: erreur:   trying to instantiate ‘template<class OutEdgeListS, class VertexListS, class DirectedS, class VertexProperty, class EdgeProperty, class GraphProperty, class EdgeListS> class boost::adjacency_list’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:622: erreur: invalid type in declaration before ‘;’ token
In file included from /env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:43:
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp: At global scope:
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp: In instantiation of ‘boost::graph_traits<int>’:
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:623:   instantiated from here
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp:57: erreur: ‘int’ is not a class, struct, or union type
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp:58: erreur: ‘int’ is not a class, struct, or union type
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp: In instantiation of ‘boost::graph_traits<int>’:
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:623:   instantiated from here
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp:65: erreur: ‘int’ is not a class, struct, or union type
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp:66: erreur: ‘int’ is not a class, struct, or union type
/env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/boost/graph/graph_traits.hpp:67: erreur: ‘int’ is not a class, struct, or union type
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp: In function ‘int correct_one_read(gatb::core::bank::Sequence, char*, gatb::core::debruijn::impl::Graph, gatb::core::system::IFile*, gatb::core::system::ISynchronizer*, int)’:
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:943: erreur: no matching function for call to ‘add_edge(int&, int&, correct_one_read(gatb::core::bank::Sequence, char*, gatb::core::debruijn::impl::Graph, gatb::core::system::IFile*, gatb::core::system::ISynchronizer*, int)::Path&, path_graph_t&)’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:946: erreur: ‘vertex_descriptor’ was not declared in this scope
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:946: erreur: patron de l'argument 1 est invalide
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:946: erreur: patron de l'argument 2 est invalide
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:946: erreur: invalid type in declaration before ‘(’ token
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:946: erreur: ‘num_vertices’ was not declared in this scope
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:948: erreur: expected ‘;’ before ‘s’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:951: erreur: ‘s’ was not declared in this scope
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:952: erreur: no matching function for call to ‘get(int correct_one_read(gatb::core::bank::Sequence, char*, gatb::core::debruijn::impl::Graph, gatb::core::system::IFile*, gatb::core::system::ISynchronizer*, int)::Path::*, path_graph_t&)’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:953: erreur: request for member ‘begin’ in ‘p’, which is of non-class type ‘int’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:953: erreur: no matching function for call to ‘get(boost::vertex_index_t, path_graph_t&)’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:954: erreur: no matching function for call to ‘get(boost::vertex_index_t, path_graph_t&)’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:965: erreur: invalid types ‘int[int]’ for array subscript
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:966: erreur: invalid types ‘int[int]’ for array subscript
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:971: erreur: no matching function for call to ‘edge(int&, int&, path_graph_t&)’
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:972: erreur: ‘e’ was not declared in this scope
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:976: erreur: ‘e’ was not declared in this scope
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp: In function ‘int main(int, char**)’:
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:1589: erreur: expected primary-expression before ‘[’ token
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:1589: erreur: expected primary-expression before ‘]’ token
/env/cns/src/lordec/LoRDEC-0.5.3-Source/tools/lordec-correct/src/lordec-correct.cpp:1589: erreur: expected primary-expression before ‘const’
make[2]: *** [tools/CMakeFiles/lordec-correct.dir/lordec-correct/src/lordec-correct.cpp.o] Erreur 1
make[1]: *** [tools/CMakeFiles/lordec-correct.dir/all] Erreur 2
make: *** [all] Erreur 2

 

 

I use the gcc version gcc-4.8.0

 

Can you help me to fix this problem??

Thanks

 

gcc lordec • 2.0k views
ADD COMMENTlink modified 3.6 years ago by guillaume.gautreau44140 • written 3.6 years ago by Carob50
2

Are there any reasons not to use the binaries?

ADD REPLYlink written 3.6 years ago by h.mon24k
1

it doesn't work too...

./lordec-correct: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./lordec-correct)

 

ADD REPLYlink written 3.6 years ago by Carob50
1

What is your operating system and which version? And do you have Boost libraries installed?
 

ADD REPLYlink modified 3.6 years ago • written 3.6 years ago by h.mon24k
1

Yes I have Boost Libraries installed 

I work on a Linux system 

 

ADD REPLYlink written 3.6 years ago by Carob50
1

which linux and which version of the particular flavour of linux?

ADD REPLYlink written 3.6 years ago by h.mon24k
1

uname -a
Linux etna0.genoscope.cns.fr 2.6.32-504.12.2.el6.x86_64 #1 SMP Wed Mar 11 22:03:14 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

 

ADD REPLYlink written 3.6 years ago by Carob50

@h.mon Thanks so much. You saved my day.

ADD REPLYlink written 2.5 years ago by Prakki Rama2.2k
1

Could you please tell me what is the output of the cmake command ? In particular, the line that begins with "-- Options". In my case, I have gcc 4.8.3 on a Fedora20, I got this :

-- Options:  -O3  -DINT128_FOUND  -DWITH_LAMBDA_EXPRESSION -std=c++0x    -DWITH_MPHF  -DDONT_USE_TR1  -Wno-invalid-offsetof

and LoRDEC compiles well.

The first error you got (erreur: template argument for ‘template<XXX> class boost::adjacency_list’ uses local type) may be related to the options detected by cmake while building the makefile (see here for instance).

ADD REPLYlink modified 3.6 years ago • written 3.6 years ago by edrezen720
1

the output of my cmake command :

-- Options:  -O3  -DINT128_FOUND -Wno-invalid-offsetof

 

ADD REPLYlink written 3.6 years ago by Carob50
1

Ok, thanks. It seems that the issue comes from the lack of "-std=c++0x", undetected during the cmake execution because the gcc version is detected as being <=4.5. Note that LoRDEC should compile only with gcc version greater than 4.5.

The weird part is that you have a gcc version 4.8.0. I think that cmake is not able to detect it by default. Could you please tell what are the very first lines of the cmake execution that give the compiler (C and CXX) identification ?

ADD REPLYlink modified 3.6 years ago • written 3.6 years ago by edrezen720
0
gravatar for Carob
3.6 years ago by
Carob50
France
Carob50 wrote:

I have changed my variables :

export CC=/env/cns/opt/gcc-4.8.0/bin/gcc
export CXX=/env/cns/opt/gcc-4.8.0/bin/g++

 

the cmake seems to finish well

 

The first lines of my cmake are :

 cmake ..
-- The C compiler identification is GNU 4.8.0
-- The CXX compiler identification is GNU 4.8.0
-- Check for working C compiler: /env/cns/opt/gcc-4.8.0/bin/gcc
-- Check for working C compiler: /env/cns/opt/gcc-4.8.0/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /env/cns/opt/gcc-4.8.0/bin/g++
-- Check for working CXX compiler: /env/cns/opt/gcc-4.8.0/bin/g++ -- works

and my option line is now : Options:  -O3  -DINT128_FOUND  -DWITH_LAMBDA_EXPRESSION -std=c++0x    -DWITH_MPHF  -DDONT_USE_TR1  -Wno-invalid-offsetof

 

But for the make line, I have this error :

[  0%] Built target hdf5_postbuild

[  0%] Building C object ext/gatb-core/thirdparty/hdf5/src/CMakeFiles/H5detect.dir/H5detect.c.o
Linking C executable ../../../bin/H5detect
[  0%] Built target H5detect
[  0%] Building C object ext/gatb-core/thirdparty/hdf5/src/CMakeFiles/H5make_libsettings.dir/H5make_libsettings.c.o
In file included from /env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/gatb-core/thirdparty/hdf5/src/H5make_libsettings.c:45:0:
/usr/include/time.h:226:5: erreur: unknown type name ‘__locale_t’
     __locale_t __loc) __THROW;
     ^
make[2]: *** [ext/gatb-core/thirdparty/hdf5/src/CMakeFiles/H5make_libsettings.dir/H5make_libsettings.c.o] Erreur 1
make[1]: *** [ext/gatb-core/thirdparty/hdf5/src/CMakeFiles/H5make_libsettings.dir/all] Erreur 2
make: *** [all] Erreur 2

 

 

Thanks a lot for your help

 

 

ADD COMMENTlink written 3.6 years ago by Carob50

Concerning the new error, did you have remove completely the build directory before launching cmake after setting CC and CXX ? If not, can you give a try ?  CMake has some cached files and I faced issues with them when switching compiler versions.

ADD REPLYlink written 3.6 years ago by edrezen720
1

I answer for Carob because she reached her number of message limit per 6hours

Finnaly she resolved his problem in using gcc 4.9.2 and with adding gcc 4.9.2 path to CC and CXX.

Thanks a lot

ADD REPLYlink written 3.6 years ago by guillaume.gautreau44140
0
gravatar for guillaume.gautreau44
3.6 years ago by
France
guillaume.gautreau44140 wrote:

I answer for Carob because she reached her biostar number of message limit per 6hours

She has removed the build directory and run `make clean` but she still has the same error message :

 In file included from /env/cns/src/lordec/LoRDEC-0.5.3-Source/thirdparty/gatb-core/thirdparty/hdf5/src/H5make_libsettings.c:45:0:
/usr/include/time.h:226:5: erreur: unknown type name ‘__locale_t’
     __locale_t __loc) __THROW;

ADD COMMENTlink modified 3.6 years ago • written 3.6 years ago by guillaume.gautreau44140

The plot thickens... I would say there is something rather strange with the gcc version you are trying to use.

Could you edit a file "test.cpp" and put this ?

#include <stdio.h>
#include <time.h>
int main () { return 0; }

and then compile it with the specific g++ version (4.8.0) you use with the following line

g++ test.cpp  -O3 -std=c++0x

Could you then tell me if you have the same error during the compilation ?

ADD REPLYlink written 3.6 years ago by edrezen720
1

Finnaly she resolved his problem in using gcc 4.9.2 and with adding gcc 4.9.2 path to CC and CXX.

Thanks a lot

ADD REPLYlink written 3.6 years ago by guillaume.gautreau44140
1

Ok, glad it worked !

ADD REPLYlink written 3.6 years ago by edrezen720
Please log in to add an answer.

Help
Access

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.
Powered by Biostar version 2.3.0
Traffic: 1962 users visited in the last hour