Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linking failure with gold #17

Open
verdurin opened this issue May 8, 2016 · 4 comments
Open

Linking failure with gold #17

verdurin opened this issue May 8, 2016 · 4 comments

Comments

@verdurin
Copy link

verdurin commented May 8, 2016

I'm building an EasyBuild module for fastq-tools.

Compilation fails because a spurious linker option is used:

== 2016-05-08 08:08:13,937 build_log.py:152 ERROR cmd " make -j 4 LIBTOOL=libtool" exited with exitcode 2 and output:
Making all in src
make[1]: Entering directory '/home/adam/.local/easybuild/build/fastqtools/0.8/foss-2016a/fastq-tools-0.8/src'
  CC       fastq-grep.o
  CC       common.o
  CC       parse.o
  CC       fastq-kmers.o
  CC       fastq-match.o
  CC       sw.o
  CC       fastq-uniq.o
  CC       hash_table.o
  CC       fastq-qual.o
  CC       fastq-sample.o
  CC       rng.o
  CC       fastq-qualadj.o
  CC       fastq-sort.o
fastq-sort.c: In function ‘seq_array_dump’:
fastq-sort.c:402:5: warning: implicit declaration of function ‘mktemp’ [-Wimplicit-function-declaration]
     if (mktemp(fn) == NULL) {
     ^
fastq-sort.c:402:20: warning: comparison between pointer and integer
     if (mktemp(fn) == NULL) {
                    ^
  CC       fastq-qscale.o
  CCLD     fastq-grep
fastq-qscale.c: In function ‘fastq_qualscale’:
fastq-qscale.c:61:21: warning: ‘compat_scales’ may be used uninitialized in this function [-Wmaybe-uninitialized]
     return x && !(x & (x - 1));
                     ^
fastq-qscale.c:89:14: note: ‘compat_scales’ was declared here
     uint32_t compat_scales;
              ^
  CCLD     fastq-kmers
  CCLD     fastq-match
/home/adam/.local/easybuild/software/binutils/2.25-GCCcore-4.9.3/bin/ld.gold: error: cannot find -lpthread-lm
collect2: error: ld returned 1 exit status
Makefile:444: recipe for target 'fastq-grep' failed
make[1]: *** [fastq-grep] Error 1
make[1]: *** Waiting for unfinished jobs....
/home/adam/.local/easybuild/software/binutils/2.25-GCCcore-4.9.3/bin/ld.gold: error: cannot find -lpthread-lm
collect2: error: ld returned 1 exit status
Makefile:448: recipe for target 'fastq-kmers' failed
make[1]: *** [fastq-kmers] Error 1
/home/adam/.local/easybuild/software/binutils/2.25-GCCcore-4.9.3/bin/ld.gold: error: cannot find -lpthread-lm
collect2: error: ld returned 1 exit status
Makefile:452: recipe for target 'fastq-match' failed
make[1]: *** [fastq-match] Error 1
make[1]: Leaving directory '/home/adam/.local/easybuild/build/fastqtools/0.8/foss-2016a/fastq-tools-0.8/src'
Makefile:376: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1

If I compile on the same system using the native toolchain, rather than the EasyBuild one, it works.

The config.log between the two attempts differs here:

-ac_cv_env_LDFLAGS_set=set
-ac_cv_env_LDFLAGS_value='-L/home/adam/.local/easybuild/software/GCCcore/4.9.3/lib64 -L/home/adam/.local/easybuild/software/GCCcore/4.9.3/lib -L/home/adam/.local/easybuild/software/OpenBLAS/0.2.15-GCC-4.9.3-2.25-LAPACK-3.6.0/lib -L/home/a
dam/.local/easybuild/software/ScaLAPACK/2.0.2-gompi-2016a-OpenBLAS-0.2.15-LAPACK-3.6.0/lib -L/home/adam/.local/easybuild/software/FFTW/3.3.4-gompi-2016a/lib -L/home/adam/.local/easybuild/software/PCRE/8.38-foss-2016a/lib -L/home/adam/.loc
al/easybuild/software/zlib/1.2.8-foss-2016a/lib -L/home/adam/.local/easybuild/software/libtool/2.4.6-foss-2016a/lib'
-ac_cv_env_LIBS_set=set
-ac_cv_env_LIBS_value='-lm -lpthread'
+ac_cv_env_LDFLAGS_set=
+ac_cv_env_LDFLAGS_value=
+ac_cv_env_LIBS_set=
+ac_cv_env_LIBS_value=

with the second output being the working one.

Other differences:

-gcc (GCC) 4.9.3
+gcc (GCC) 5.3.1 20160406 (Red Hat 5.3.1-6)
-COLLECT_GCC=gcc
-COLLECT_LTO_WRAPPER=/home/adam/.local/easybuild/software/GCCcore/4.9.3/libexec/gcc/x86_64-unknown-linux-gnu/4.9.3/lto-wrapper
-Target: x86_64-unknown-linux-gnu
-Configured with: ../configure --enable-languages=c,c++,fortran --enable-lto --enable-checking=release --disable-multilib --enable-shared=yes --enable-static=yes --enable-threads=posix --enable-gold=default --enable-plugins --enable-ld --with-plugin-ld=ld.gold --enable-bootstrap --prefix=/home/adam/.local/easybuild/software/GCCcore/4.9.3 --with-local-prefix=/home/adam/.local/easybuild/software/GCCcore/4.9.3
+COLLECT_GCC=/usr/bin/gcc
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper
+Target: x86_64-redhat-linux
+Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux

Is this a problem with the EasyBuild toolchain, or something that can be fixed in fastq-tools?

@verdurin
Copy link
Author

verdurin commented May 8, 2016

Further to this, EasyBuild sets the following:

export LIBS="-lm -lpthread"

which looks fine to me, implying that the problem does lie with fastq-tools.

Is there a missing space somewhere, leading to the garbled linker line?

@verdurin
Copy link
Author

Looking at this again, I see in the config.log output:

LIBS='-lm -lpthread-lm'

so it looks like a spurious -lm is being added to the EasyBuild value, without a space.

@SethosII
Copy link

@verdurin The problem is this line https://github.com/dcjones/fastq-tools/blob/master/configure.ac#L56 which just adds -lm to LIBS. I created an issue for that: #20. And we now got a working EasyConfig for fastq-tools: easybuilders/easybuild-easyconfigs#5396. The issue easybuilders/easybuild-easyconfigs#3011 can also be closed?

@verdurin
Copy link
Author

@SethosII yes, it can. Thanks for the update.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants