Compiling issue

Issue #54 resolved
Michael Weiner created an issue

Hello. I have been asked to install Metbat on our HPC for use by one of our Cores here. This is a CentOS 6.5 based linux system:

Kernel: 2.6.32-431.17.1.el6.x86_64 Boost: 1.65.1 Python: 2.7.12 SCONS: 3.0.4 Samtools: 1.7 GCC: 5.4.0 Zlib: 1.2.8

And i try to execute the following:

scons install PREFIX=/cm/shared/apps/metabat/2.12.1 BOOST_ROOT=/cm/shared/apps/boost/1.65.1

it seems to build samtools ok but then exists the compilation with the following error:

g++ -o src/jgi_summarize_bam_contig_depths.o -c -Wall -g -std=c++11 -fopenmp -O3 -DNDEBUG -Wno-unknown-pragmas -Wno-deprecated-declarations -Wno-overflow -Wno-unused-variable -Isamtools-inst/include -Isamtools-inst/include -I/include -I/cm/shared/apps/boost/1.65.1/include src/jgi_summarize_bam_contig_depths.cpp g++ -o jgi_summarize_bam_contig_depths -lstdc++ -lm -fopenmp -static -static-libgcc -static-libstdc++ src/jgi_summarize_bam_contig_depths.o samtools-inst/lib/libbam.a samtools-inst/lib/libhts.a -lpthread -lz /cm/shared/apps/gcc/5.4.0/lib/gcc/x86_64-unknown-linux-gnu/5.4.0/../../../../lib64/libgomp.a(target.o): In function gomp_load_plugin_for_device': /root/temp/gcc/x86_64-unknown-linux-gnu/libgomp/../../../gcc-5.4.0/libgomp/target.c:1109: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking samtools-inst/lib/libhts.a(knetfile.o): In functionsocket_connect': /root/temp/berkeleylab-metabat-3099fac059e6/samtools-1.7/htslib-1.7/knetfile.c:102: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking /usr/lib/../lib64/libpthread.a(libpthread.o): In function sem_open': (.text+0x77cd): warning: the use ofmktemp' is dangerous, better use mkstemp' samtools-inst/lib/libhts.a(hfile_libcurl.o): In functioneasy_errno': hfile_libcurl.c:(.text+0xcd): undefined reference to curl_easy_getinfo' hfile_libcurl.c:(.text+0x10d): undefined reference tocurl_easy_getinfo' samtools-inst/lib/libhts.a(hfile_libcurl.o): In function wait_perform': hfile_libcurl.c:(.text+0xaa5): undefined reference tocurl_multi_fdset' hfile_libcurl.c:(.text+0xaff): undefined reference to curl_multi_perform' hfile_libcurl.c:(.text+0xb52): undefined reference tocurl_multi_info_read' hfile_libcurl.c:(.text+0xb7a): undefined reference to curl_multi_timeout' samtools-inst/lib/libhts.a(hfile_libcurl.o): In functionlibcurl_close': hfile_libcurl.c:(.text+0xe93): undefined reference to curl_easy_pause' hfile_libcurl.c:(.text+0xee7): undefined reference tocurl_multi_remove_handle' hfile_libcurl.c:(.text+0xf0a): undefined reference to curl_easy_cleanup' hfile_libcurl.c:(.text+0xf13): undefined reference tocurl_multi_cleanup' hfile_libcurl.c:(.text+0xf69): undefined reference to curl_multi_remove_handle' samtools-inst/lib/libhts.a(hfile_libcurl.o): In functionlibcurl_write': hfile_libcurl.c:(.text+0x108d): undefined reference to curl_easy_pause' samtools-inst/lib/libhts.a(hfile_libcurl.o): In functionlibcurl_exit': hfile_libcurl.c:(.text+0x113e): undefined reference to curl_share_cleanup' samtools-inst/lib/libhts.a(hfile_libcurl.o): In functionlibcurl_open': hfile_libcurl.c:(.text+0x1d33): undefined reference to curl_multi_init' hfile_libcurl.c:(.text+0x1d45): undefined reference tocurl_easy_init' hfile_libcurl.c:(.text+0x1d64): undefined reference to curl_easy_setopt' hfile_libcurl.c:(.text+0x1d7b): undefined reference tocurl_easy_setopt' hfile_libcurl.c:(.text+0x1d9d): undefined reference to curl_easy_setopt' hfile_libcurl.c:(.text+0x1db3): undefined reference tocurl_easy_setopt' hfile_libcurl.c:(.text+0x1dcd): undefined reference to curl_easy_setopt' samtools-inst/lib/libhts.a(hfile_libcurl.o):hfile_libcurl.c:(.text+0x1e06): more undefined references tocurl_easy_setopt' follow samtools-inst/lib/libhts.a(hfile_libcurl.o): In function libcurl_open': hfile_libcurl.c:(.text+0x2219): undefined reference tocurl_multi_add_handle' hfile_libcurl.c:(.text+0x2322): undefined reference to curl_easy_cleanup' hfile_libcurl.c:(.text+0x2330): undefined reference tocurl_multi_cleanup' hfile_libcurl.c:(.text+0x237b): undefined reference to curl_multi_remove_handle' hfile_libcurl.c:(.text+0x239d): undefined reference tocurl_easy_setopt' hfile_libcurl.c:(.text+0x23b3): undefined reference to curl_easy_setopt' hfile_libcurl.c:(.text+0x23e1): undefined reference tocurl_easy_setopt' hfile_libcurl.c:(.text+0x24a6): undefined reference to curl_easy_getinfo' samtools-inst/lib/libhts.a(hfile_libcurl.o): In functionrestart_from_position': hfile_libcurl.c:(.text+0x294d): undefined reference to curl_easy_setopt' hfile_libcurl.c:(.text+0x2983): undefined reference tocurl_easy_duphandle' hfile_libcurl.c:(.text+0x29a3): undefined reference to curl_easy_setopt' hfile_libcurl.c:(.text+0x29ba): undefined reference tocurl_easy_setopt' hfile_libcurl.c:(.text+0x29d1): undefined reference to curl_easy_setopt' hfile_libcurl.c:(.text+0x29ee): undefined reference tocurl_easy_cleanup' hfile_libcurl.c:(.text+0x2a30): undefined reference to curl_multi_add_handle' hfile_libcurl.c:(.text+0x2a62): undefined reference tocurl_easy_cleanup' hfile_libcurl.c:(.text+0x2acb): undefined reference to curl_easy_cleanup' hfile_libcurl.c:(.text+0x2af5): undefined reference tocurl_easy_pause' hfile_libcurl.c:(.text+0x2b3a): undefined reference to curl_multi_remove_handle' hfile_libcurl.c:(.text+0x2b4e): undefined reference tocurl_easy_reset' hfile_libcurl.c:(.text+0x2b5c): undefined reference to curl_multi_remove_handle' hfile_libcurl.c:(.text+0x2bd5): undefined reference tocurl_easy_reset' hfile_libcurl.c:(.text+0x2be3): undefined reference to curl_multi_remove_handle' hfile_libcurl.c:(.text+0x2c19): undefined reference tocurl_easy_cleanup' hfile_libcurl.c:(.text+0x2c31): undefined reference to curl_easy_setopt' hfile_libcurl.c:(.text+0x2c46): undefined reference tocurl_easy_setopt' hfile_libcurl.c:(.text+0x2cd5): undefined reference to curl_easy_cleanup' hfile_libcurl.c:(.text+0x2d43): undefined reference tocurl_easy_reset' samtools-inst/lib/libhts.a(hfile_libcurl.o): In function libcurl_read': hfile_libcurl.c:(.text+0x2f42): undefined reference tocurl_easy_pause' samtools-inst/lib/libhts.a(hfile_libcurl.o): In function hfile_plugin_init_libcurl': hfile_libcurl.c:(.text+0x307b): undefined reference tocurl_global_init' hfile_libcurl.c:(.text+0x3088): undefined reference to curl_share_init' hfile_libcurl.c:(.text+0x30ac): undefined reference tocurl_share_setopt' hfile_libcurl.c:(.text+0x30c6): undefined reference to curl_share_setopt' hfile_libcurl.c:(.text+0x30e0): undefined reference tocurl_share_setopt' hfile_libcurl.c:(.text+0x315e): undefined reference to curl_version_info' hfile_libcurl.c:(.text+0x31dc): undefined reference tocurl_share_cleanup' hfile_libcurl.c:(.text+0x31e1): undefined reference to curl_global_cleanup' hfile_libcurl.c:(.text+0x322f): undefined reference tocurl_share_cleanup' hfile_libcurl.c:(.text+0x3234): undefined reference to curl_global_cleanup' samtools-inst/lib/libhts.a(hfile_libcurl.o): In functionlibcurl_exit': hfile_libcurl.c:(.text+0x124d): undefined reference to curl_global_cleanup' samtools-inst/lib/libhts.a(hfile_s3.o): In functionauth_header_callback': hfile_s3.c:(.text+0x8e7): undefined reference to EVP_sha1' hfile_s3.c:(.text+0x90d): undefined reference toHMAC' collect2: error: ld returned 1 exit status scons: *** [jgi_summarize_bam_contig_depths] Error 1 scons: building terminated because of errors.

What else can i provide to help debug this compiling issue?

Comments (4)

  1. Michael Weiner reporter

    I found a pre-compiled version among your releases, so that should fix me temporarily but i would really like to be able to build this by hand.

  2. Rob Egan

    The error you have shows a lot of linking errors, mostly around libcurl which are required from the htslib and/or samtools libraries that are built. These are tricky to fix and highly system dependent. I suspect that some dependencies have not been met in your system. You can use the docker build or look to the Dockerfile for the explicit list of packages that are required (at least for Ubuntu 16.04)

    In the next major release I intend to replace the scons build with something more reliable.

  3. Rob Egan

    The build system has changed and curl is now not part of the dependencies of libhts. Please open a new ticket if the build via cmake fails for you now.

  4. Log in to comment