mikolmogorov / Ragout

Chromosome-level scaffolding using multiple references
Other
149 stars 27 forks source link

'make' returns error on my server, but not on local machine #4

Closed elsherbini closed 9 years ago

elsherbini commented 9 years ago

When trying to install ragout on my server I received the following error:

make -C ragout/overlap/cpp_impl all
make[1]: Entering directory `/home/josephe/lib/ragout-1.1-linux-x86_64/ragout/overlap/cpp_impl'
g++  build_graph.o fasta.o main.o overlap.o suffix_array.o -o /home/josephe/lib/ragout-1.1-linux-x86_64/lib/ragout-overlap
build_graph.o: In function `makeOverlapGraph(std::basic_string, std::allocator > const&, std::basic_string, std::allocator > const&, int, int, bool, bool)':
build_graph.cpp:(.text+0x6a5): undefined reference to `std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const'
build_graph.o: In function `std::_Hashtable, std::allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, false>*)':
build_graph.cpp:(.text._ZNSt10_HashtableIiSt4pairIKiiESaIS2_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb0EEE[std::_Hashtable, std::allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, false>*)]+0x30): undefined reference to `std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const'
overlap.o: In function `getOverlaps(std::vector >&, int, int)':
overlap.cpp:(.text+0x7ef): undefined reference to `std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const'
overlap.cpp:(.text+0x858): undefined reference to `std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const'
overlap.cpp:(.text+0xec2): undefined reference to `std::__detail::_Prime_rehash_policy::_M_next_bkt(unsigned long) const'
overlap.o: In function `std::_Hashtable > >, std::allocator > > >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node > >, false>*)':
overlap.cpp:(.text._ZNSt10_HashtableIcSt4pairIKcSt6vectorIxSaIxEEESaIS5_ENSt8__detail10_Select1stESt8equal_toIcESt4hashIcENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS7_10_Hash_nodeIS5_Lb0EEE[std::_Hashtable > >, std::allocator > > >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node > >, false>*)]+0x30): undefined reference to `std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const'
overlap.o: In function `std::_Hashtable, std::allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, false>*)':
overlap.cpp:(.text._ZNSt10_HashtableIcSt4pairIKcxESaIS2_ENSt8__detail10_Select1stESt8equal_toIcESt4hashIcENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS4_10_Hash_nodeIS2_Lb0EEE[std::_Hashtable, std::allocator >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node, false>*)]+0x30): undefined reference to `std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const'
overlap.o: In function `std::_Hashtable > >, std::allocator > > >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node > >, false>*)':
overlap.cpp:(.text._ZNSt10_HashtableIP11FastaRecordSt4pairIKS1_St6vectorIP7OverlapSaIS6_EEESaIS9_ENSt8__detail10_Select1stESt8equal_toIS1_ESt4hashIS1_ENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNSB_10_Hash_nodeIS9_Lb0EEE[std::_Hashtable > >, std::allocator > > >, std::__detail::_Select1st, std::equal_to, std::hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node > >, false>*)]+0x30): undefined reference to `std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned long, unsigned long, unsigned long) const'
collect2: ld returned 1 exit status
make[1]: *** [maf2synteny] Error 1
make[1]: Leaving directory `/home/josephe/lib/ragout-1.1-linux-x86_64/ragout/overlap/cpp_impl'
make: *** [overlap] Error 2

However, I was able to install ragout successfully on my local machine and run the E. coli example. Am I missing a dependency on the server? Is there a precompiled version available somewhere?

Both my server and my local machine run Ubuntu 64bit. On the server I have gcc version 4.4.3 and on my local machine I have gcc version 4.9.1.

Thanks for your help.

mikolmogorov commented 9 years ago

Thanks for your feedback!

GCC 4.4 is too old (you need at least 4.6 for new C++ standard support). The easiest thing you can do is to use precompiled binary from releases page - https://github.com/fenderglass/Ragout/releases

elsherbini commented 9 years ago

Interestingly, I downloaded the precompiled release on both my local machine and my server. On my local machine it works correctly, but on the server it gave the error:

>python ragout.py examples/E.Coli/ecoli.rcp -o examples/E.Coli/out
[15:12:59] INFO: Cooking Ragout...
[15:12:59] ERROR: Some error inside native ragout-maf2synteny module: Command '['ragout-maf2synteny', '--help']' returned non-zero exit status 1
[15:12:59] ERROR: An error occured while running Ragout:
[15:12:59] ERROR: maf2synteny binary is missing, did you run 'make'?
mikolmogorov commented 9 years ago

It might be that c++ libraries on your server are incompatible with binaries.. Could you run "./lib/ragout-maf2synteny" and see what happens?

elsherbini commented 9 years ago

Yes, that appears to be the problem. I'll contact the sysadmin and see about updating these things (long overdue) or look into running the program elsewhere. I appreciate your help!

./lib/ragout-maf2synteny: /lib/libc.so.6: version `GLIBC_2.14' not found (required by ./lib/ragout-maf2synteny)
./lib/ragout-maf2synteny: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.18' not found (required by ./lib/ragout-maf2synteny)
./lib/ragout-maf2synteny: /usr/lib/libstdc++.so.6: version `CXXABI_1.3.5' not found (required by ./lib/ragout-maf2synteny)
mikolmogorov commented 9 years ago

Please check if these binaries will work for you - they are statically linked (just replace them with ones in "lib" folder). https://www.dropbox.com/s/coinwtnj5b31l1d/lib.zip?dl=0

elsherbini commented 9 years ago

This seemed to fix two of the dependancies, but not the GLIBC_2.14 one:

>./ragout-maf2synteny 
./ragout-maf2synteny: /lib/libc.so.6: version `GLIBC_2.14' not found (required by ./ragout-maf2synteny)
>./ragout-overlap     
./ragout-overlap: /lib/libc.so.6: version `GLIBC_2.14' not found (required by ./ragout-overlap)
>./Sibelia       
./Sibelia: /lib/libc.so.6: version `GLIBC_2.14' not found (required by ./Sibelia)
elsherbini commented 9 years ago

the libc version on the server is:

GNU C Library (Ubuntu EGLIBC 2.11.1-0ubuntu7.8) stable release version 2.11.1, by Roland McGrath et al.
mikolmogorov commented 9 years ago

Ok, this is generally not recommended, but let's try static libc as well - https://www.dropbox.com/s/qgz5szua6dl5jl3/lib-static-libc.zip?dl=0

elsherbini commented 9 years ago

I really appreciate all your help, this appears to let me run it even on my neglected server. Thanks!

mikolmogorov commented 9 years ago

Glad to hear that! I will probably include static binaries in future releases.