[Debian-med-packaging] Problems linking hdf5, gzstream, boost_program_options due to usage of simple Makefile

Peter Colberg peter at colberg.org
Tue Mar 29 20:00:58 UTC 2016


Hi Andreas,

On Tue, Mar 29, 2016 at 09:18:50PM +0200, Andreas Tille wrote:
> I'm trying to package seer[1] for the Debian Med team.  Upstream provides a
> simple Makefile which is probably the cause why the libraries for linking
> are not found properly so it ends up in
> 
> ...
> g++ -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wall -O3 -std=c++11 -I/nonexistent/software/include -I../gzstream -I../dlib -D DLIB_NO_GUI_SUPPORT=1 -D DLIB_USE_BLAS=1 -D DLIB_USE_LAPACK=1 -Wl,-z,relro  sample.o significant_kmer.o kmer.o covar.o seerCommon.o seerErr.o seerFilter.o seerIO.o seerChiFilter.o seerMain.o seerCmdLine.o seerContinuousAssoc.o seerBinaryAssoc.o logitFunction.o linearFunction.o -lhdf5 -lgzstream -lz -larmadillo -lboost_program_options -llapack -lblas -Wl,-z,relro -o seer
> /usr/bin/ld: cannot find -lhdf5
> /usr/bin/ld: cannot find -lgzstream
> /usr/bin/ld: cannot find -lboost_program_options
> collect2: error: ld returned 1 exit status
> 
> Any hint how to elegantly deal with this situation?

Besides the command-line options -I and -L, GCC and Clang read the
colon-separated (:) environment variables CPATH and LIBRARY_PATH
to search for header files and link libraries, respectively.

You can set these in debian/rules:

  # Support manual invocation of debian/rules
  include /usr/share/dpkg/architecture.mk

  export CPATH := /usr/include/hdf5/serial
  export LIBRARY_PATH := /usr/lib/$(DEB_TARGET_MULTIARCH)/hdf5/serial

Regards,
Peter



More information about the Debian-med-packaging mailing list