Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

Compilation error when --enable-64bit

2010-10-01
2013-04-18
  • James and fellow Staden users,

    I am having trouble compiling /bio/sw/staden-2.0.0b7 in 64 bit mode on a standard Centos 5.5 x86_64 system:

    % ./configure -prefix=/bio/sw/staden-2.0.0b7 -enable-64bit -with-io_lib=/bio/sw/io_lib -with-samtools=/bio/sw/samtools  -with-tk=/usr/lib64/ -with-tklib=/usr/share/tcl8.4/

    External packages used:
    curl:      via /usr/bin/curl-config
    zlib:      DIR (system)
    ncurses:   DIR (system)
    liblzma:   DIR
    samtools:  DIR /bio/sw/samtools
    io_lib:    via /bio/sw/io_lib/bin/io_lib-config
    Tcl:       via /usr/lib/tclConfig.sh
    Tk:        via /usr/lib64/tkConfig.sh
    tklib:     /usr/share/tklib0.4
    Iwidgets:  /usr/share/iwidgets4.0.1
    Itcl:      /usr/lib64/itcl3.3
    Itk:       /usr/lib64/itk3.3

    % make

    Works for a while, then:

    gcc -L/bio/src/staden/staden-2.0.0b7-src/lib -o insert_size_dist insert_size_dist.o  -lg   -lgap   -ltk_utils    -lprimer3   -lmutlib   -lseq_utils   -lmisc  -L/usr/lib -ltcl8.4 -ldl  -lpthread -lieee -lm  -lm  -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libtcl8.4.so when searching for -ltcl8.4
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.a when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
    /usr/bin/ld: skipping incompatible /usr/lib/libpthread.a when searching for -lpthread
    /usr/bin/ld: skipping incompatible /usr/lib/libieee.a when searching for -lieee
    /usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.a when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
    /usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
    /usr/bin/ld: warning: libstaden-read.so.1, needed by /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so, not found (try using -rpath or -rpath-link)
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_mfread_info'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `mfreopen'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_destroy_info'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `read_deallocate'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `mrewind'
    /bio/src/staden/staden-2.0.0b7-src/lib/libtk_utils.so: undefined reference to `trace_type_int2str'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_get_int'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_close'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_set_entry'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `conf2str'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_put_int'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `str2conf'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `str2opos'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `opos2str'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `get_read_conf'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `read_allocate'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `mfclose'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `mfopen'
    /bio/src/staden/staden-2.0.0b7-src/lib/libtk_utils.so: undefined reference to `read_experiment_redirect'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `mfgets'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_put_str'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_put_rng'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `read_reading'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_get_rng'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `fdetermine_trace_type'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `open_exp_mfile'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `trace_type_str2int'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `mfdestroy'
    /bio/src/staden/staden-2.0.0b7-src/lib/libtk_utils.so: undefined reference to `read2exp'
    /bio/src/staden/staden-2.0.0b7-src/lib/libtk_utils.so: undefined reference to `read_update_base_positions'
    /bio/src/staden/staden-2.0.0b7-src/lib/libtk_utils.so: undefined reference to `read_update_confidence_values'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `exp_create_info'
    /bio/src/staden/staden-2.0.0b7-src/lib/libtk_utils.so: undefined reference to `determine_trace_type'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `write_reading'
    /bio/src/staden/staden-2.0.0b7-src/lib/libtk_utils.so: undefined reference to `exp_print_mfile'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `read_dup'
    /bio/src/staden/staden-2.0.0b7-src/lib/libgap.so: undefined reference to `mfflush'
    collect2: ld returned 1 exit status
    make: ***  Error 1
    make: Leaving directory `/bio/src/staden/staden-2.0.0b7-src/prefinish'
    make: ***  Error 2

    I think the "skipping" lines are to do with the -L/usr/lib line, where it should be -L/usr/lib64 ?

    Also, the the missing "staden-read.so" can't be found because the "-L/bio/sw/io_lib/" I provided with configure isn't being propogated?

    Any help appreciated.

    Torsten

     
  • Hello Torsten,

    We have made an Centos5.5 installation and have managed to replicate part of your problem.  Centos seems to need more explicit linking instructions than Debian/Unbuntu and so it is not finding the libstaden-read.so.1 library.

    I'm going to check the changes in after I've done more testing but if you want a quick fix you can add:
        $(IOLIB_LIB)
    to the end of the library lists in the Makefiles in prefinish, convert and gap5 under the staden src directory.

    I can't replicate the skipping behaviour.  I have tried configure with and without the -enable-64bit switch and it doesn't appear on either make.

    More later when I've checked the Makefiles in.

    regards,

    Andrew

     
  • The new Makefiles are now in subversion.  The can be found here:
    convert Makefile
    gap5 Makefile
    prefinish Makefile

    and replace the files from their respective directories.

    I hope this helps,

    Andrew

     
  • The They can be found here.

    No preview or edit, sigh

     
  • Andrew,

    Thank you so much for your response!

    I made the changes by hand, as the SVN gap5 makefile was > 500 lines longer than my existing 2.0b7 one, and didn't work. I also had to add the $(IOLIB) to one or two other Makefiles as well.

    I now have a working, compiled 2.0b7 64-bit gap5 and am very happy! The functionality is far beyond the previous 2.0b version I had tried, and am now trying to use it for some large bacterial projects involving 454, Sanger and Illumina data.

    I look forward to giving feedback and bug reports to further improve this much needed NGS-friendly genome finishing package.

    -Torsten

     
  • Hi Torsten,

    I'm glad that you have managed to gap5 working.

    SVN gap5 makefile was > 500 lines longer than my existing 2.0b7 one, and didn't work

    I should have thought of that.  Unsurprisingly gap5 is changing faster than the other parts of the Staden Package.

    I also had to add the $(IOLIB) to one or two other Makefiles as well.

    Could you tell me which ones?  The only Makefiles I had to change to get it working here were in gap5, convert and prefinish.

    Keep up the good work with the bug reports :-)

    Andrew

     
  • Hi,
    first , thanks for you work.
    I've got the same problem of Torsten but the fix doesn't work at all
    Centos 5.5 64 bit , with cvs version of prefinish/gap5/convert Makefile I have this error message:

    External packages used:
    curl:      via /usr/bin/curl-config
    zlib:      DIR (system)
    ncurses:   DIR (system)
    liblzma:   DIR
    samtools:  DIR /home/mdonadel/samtools
    io_lib:    via /opt/sci-biology/bin/io_lib-config
    Tcl:       via /usr/lib/tclConfig.sh
    Tk:        via /usr/lib/tkConfig.sh
    tklib:     /usr/share/tklib0.4
    Iwidgets:  /usr/share/iwidgets4.0.1
    Itcl:      /usr/lib64/itcl3.3
    Itk:       /usr/lib64/itk3.3

    make: Entering directory `/home/mdonadel/staden-2.0.0b7-src/gap4'
    make: Nothing to be done for `all'.
    make: Leaving directory `/home/mdonadel/staden-2.0.0b7-src/gap4'
    cd prefinish && make -f /home/mdonadel/staden-2.0.0b7-src/./prefinish/Makefile   BUILD=/home/mdonadel/staden-2.0.0b7-src SRC=/home/mdonadel/staden-2.0.0b7-src/./prefinish SUBDIR=prefinish all
    make: Entering directory `/home/mdonadel/staden-2.0.0b7-src/prefinish'
    gcc -L/home/mdonadel/staden-2.0.0b7-src/lib -o staden_convert list.o main.o dapIO.o dapDB.o bapIO.o bapDB.o gapDB.o process.o flat_sd.o   -lm  -ldl   -lgap   -lg    -lprimer3   -lmutlib   -ltk_utils   -lseq_utils   -lmisc  -L/opt/sci-biology/lib -lstaden-read  -lm   -lcurl -lz
    gcc: list.o: No such file or directory
    gcc: dapIO.o: No such file or directory
    gcc: dapDB.o: No such file or directory
    gcc: bapIO.o: No such file or directory
    gcc: bapDB.o: No such file or directory
    gcc: gapDB.o: No such file or directory
    gcc: process.o: No such file or directory
    gcc: flat_sd.o: No such file or directory
    make: ***  Error 1
    make: Leaving directory `/home/mdonadel/staden-2.0.0b7-src/prefinish'
    make: ***  Error 2

    Could you help me ?
    Thanks again.

     
  • Hello Person-with-no-name,

    Have you put the convert Makefile in the prefinish directory by mistake?

    regards,

    Andrew

     
  • Lobosky
    Lobosky
    2010-12-14

    Thanks for your support and your work!
    Anyway, I've checked again and every modified makefile is in the right place …during make I have a lot of
    skipping incompatible like these

    dinuc_freqs.o -L/usr/lib -ltk8.4 -L/usr/lib -ltcl8.4 -lX11 -ldl  -lpthread -lieee -lm   -ltk_utils   -lseq_utils   -lmisc
    /usr/bin/ld: skipping incompatible /usr/lib/libtk8.4.so when searching for -ltk8.4
    /usr/bin/ld: skipping incompatible /usr/lib/libtk8.4.so when searching for -ltk8.4
    /usr/bin/ld: skipping incompatible /usr/lib/libtcl8.4.so when searching for -ltcl8.4
    /usr/bin/ld: skipping incompatible /usr/lib/libtcl8.4.so when searching for -ltcl8.4
    /usr/bin/ld: skipping incompatible /usr/lib/libX11.so when searching for -lX11
    /usr/bin/ld: skipping incompatible /usr/lib/libX11.so when searching for -lX11
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.a when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.so when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libdl.a when searching for -ldl
    /usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
    /usr/bin/ld: skipping incompatible /usr/lib/libpthread.a when searching for -lpthread
    /usr/bin/ld: skipping incompatible /usr/lib/libpthread.so when searching for -lpthread
    /usr/bin/ld: skipping incompatible /usr/lib/libpthread.a when searching for -lpthread
    /usr/bin/ld: skipping incompatible /usr/lib/libieee.a when searching for -lieee
    /usr/bin/ld: skipping incompatible /usr/lib/libieee.a when searching for -lieee
    /usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libm.so when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libm.a when searching for -lm
    /usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
    /usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc
    /usr/bin/ld: skipping incompatible /usr/lib/libc.so when searching for -lc
    /usr/bin/ld: skipping incompatible /usr/lib/libc.a when searching for -lc

    Finally I have this positive ( :-) message:

    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `exp_destroy_info'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `read_deallocate'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `trace_type_int2str'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `exp_get_int'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `conf2str'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `str2conf'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `str2opos'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `opos2str'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `mfclose'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `mfopen'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `read_experiment_redirect'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `exp_put_str'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `read_reading'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `trace_type_str2int'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `read2exp'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `read_update_base_positions'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `read_update_confidence_values'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `determine_trace_type'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `write_reading'
    /home/mdonadel/staden-2.0.0b7-src/./make_weights/../lib/libtk_utils.so: undefined reference to `exp_print_mfile'
    collect2: ld returned 1 exit status
    make: ***  Error 1
    make: Leaving directory `/home/mdonadel/staden-2.0.0b7-src/make_weights'
    make: ***  Error 2

     
  • Hello,

    I think the skipping behaviour is harmless.  Centos has the 32 bit libraries in /usr/lib and the 64 bit libraries in /usr/lib64.  The computer is looking at the 32 bit libraries first, not using them because it is trying to compile a 64 bit program, and then (hopefully) find the 64 bit libraries it needs later.

    I can not replicate your error with make_weights on my Centos instance but I think it is the same problem as Torsten had.  The make_weights Makefile needs an explicit reference to io_libs.  So if you change the Makefile from:

    HLIBS=\
        $(SEQUTILS_LIB) \
        $(TEXTUTILS_LIB) \
        $(MISC_LIB) \
        $(MATH_LIB)
    

    to:

    HLIBS=\
        $(SEQUTILS_LIB) \
        $(TEXTUTILS_LIB) \
        $(MISC_LIB) \
        $(MATH_LIB) \
        $(IOLIB_LIB)
    

    Hopefully it should work.

    regards,

    Andrew

     
  • News from a make ….

    make: Entering directory `/home/mdonadel/staden-2.0.0b7-src/tgap'
    make: Nothing to be done for `all'.
    make: Leaving directory `/home/mdonadel/staden-2.0.0b7-src/tgap'
    cd gap5 && make -f /home/mdonadel/staden-2.0.0b7-src/./gap5/Makefile   BUILD=/home/mdonadel/staden-2.0.0b7-src SRC=/home/mdonadel/staden-2.0.0b7-src/./gap5 SUBDIR=gap5 all
    make: Entering directory `/home/mdonadel/staden-2.0.0b7-src/gap5'
    make: *** No rule to make target `/home/mdonadel/staden-2.0.0b7-src/./gap5/dis_readings.h', needed by `newgap5_cmds.o'.  Stop.
    make: Leaving directory `/home/mdonadel/staden-2.0.0b7-src/gap5'
    make: ***  Error 2

    Thanks for your support.

     
  • I think this is because you are using the current gap5 Makefile from subversion.  As Torsten said in reply 6, the current gap5 Makefile does not work with the tarred version.  There have been too many changes to it.

    Instead, go back to the original gap5 Makefile and change this:

    TGILIBS = \
        $(TGAP_LIB) \
        $(GAP5_LIB) \
        $(P3_LIB) \
        $(ZLIB_LIB) \
        $(TKUTILS_LIB) \
        $(SEQUTILS_LIB) \
        $(TK_LIB) \
        $(SAMTOOLS_LIB) \
        $(MISC_LIB)
    

    to this:

    TGILIBS = \
        $(TGAP_LIB) \
        $(GAP5_LIB) \
        $(P3_LIB) \
        $(ZLIB_LIB) \
        $(TKUTILS_LIB) \
        $(SEQUTILS_LIB) \
        $(TK_LIB) \
        $(SAMTOOLS_LIB) \
        $(MISC_LIB) \
        $(IOLIB_LIB)
    

    That should do the trick.

    Andrew

     
  • Lobosky
    Lobosky
    2010-12-15

    Thanks Andrew. Now works.

    Here the diff list:

    diff ./make_weights/Makefile ../staden-2.0.0b7-src/./make_weights/Makefile
    21,22c21
    < $(MATH_LIB) \
    < $(IOLIB_LIB)
    --
    > $(MATH_LIB)

    diff ./prefinish/Makefile ../staden-2.0.0b7-src/./prefinish/Makefile
    53,54c53
    < $(TCL_LIB) \
    < $(IOLIB_LIB)
    --
    > $(TCL_LIB)

    diff ./gap5/Makefile ../staden-2.0.0b7-src/./gap5/Makefile
    119c119
    < $(SHLIB_LD) $(SHLIB_LDFLAGS) $(SHLIB_OUTFLAG)$@ $(SHLIB_SONAME) $(LINK_PATHFLAG)$(L) $(GAP5) $(GAP5_LIBS) $(SHLIB_DEP) $(IOLIB_LIB)
    --
    > $(SHLIB_LD) $(SHLIB_LDFLAGS) $(SHLIB_OUTFLAG)$@ $(SHLIB_SONAME) $(LINK_PATHFLAG)$(L) $(GAP5) $(GAP5_LIBS) $(SHLIB_DEP)

    diff ./find_renz/Makefile ../staden-2.0.0b7-src/./find_renz/Makefile
    18,19c18
    < $(MISC_LIB) \
    < $(IOLIB_LIB)
    --
    > $(MISC_LIB)

    diff ./gap4/Makefile ../staden-2.0.0b7-src/./gap4/Makefile
    71,72c71
    < $(TCL_LIB) \
    < $(IOLIB_LIB)
    --

    213c212
    < $(SHLIB_LD) $(SHLIB_LDFLAGS) $(SHLIB_OUTFLAG)$@ $(SHLIB_SONAME) $(LINK_PATHFLAG)$(L) $(GAPOBJS) $(GAP4_LIBS) $(CXX_DEP) $(SHLIB_DEP) $(F77_DEP) $(IOLIB_LIB)
    --
    > $(SHLIB_LD) $(SHLIB_LDFLAGS) $(SHLIB_OUTFLAG)$@ $(SHLIB_SONAME) $(LINK_PATHFLAG)$(L) $(GAPOBJS) $(GAP4_LIBS) $(CXX_DEP) $(SHLIB_DEP) $(F77_DEP)
    231,233c230
    < $(TCL_LIB) \
    <  $(IOLIB_LIB)
    <
    --
    > $(TCL_LIB)

    diff ./convert/Makefile ../staden-2.0.0b7-src/./convert/Makefile
    30,31c30
    < $(MISC_LIB) \
    < $(IOLIB_LIB)
    --
    > $(MISC_LIB)

     
  • Excellent, I'm glad that it works.

    Thanks for the diffs, I'll add the ones that need changing to the source code.

    regards,

    Andrew