[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dh_shlibdeps warnings on buildd about undefined OpenMP symbols



Hi,

In healpix-cxx, I'm getting warnings from dh_shlibdeps about missing OpenMP symbols. See, for example, this excerpt from https://buildd.debian.org/status/fetch.php?pkg=healpix-cxx&arch=i386&ver=3.11.2-6&stamp=1401836504:

> dpkg-shlibdeps: warning: symbol GOMP_critical_end used by debian/libhealpix-cxx0/usr/lib/i386-linux-gnu/libhealpix_cxx.so.0.0.0 found in none of the libraries
> dpkg-shlibdeps: warning: symbol GOMP_loop_end used by debian/libhealpix-cxx0/usr/lib/i386-linux-gnu/libhealpix_cxx.so.0.0.0 found in none of the libraries
> dpkg-shlibdeps: warning: symbol omp_get_wtime used by debian/libhealpix-cxx0/usr/lib/i386-linux-gnu/libhealpix_cxx.so.0.0.0 found in none of the libraries
> ...

Furthermore, the package built by the buildd is missing a dependency on libgomp1:
https://packages.debian.org/sid/libhealpix-cxx0

However, when I build the package on my own box, I get no such warnings. In fact, if I run dh_shlibdeps verbosely, I see that it is correctly detecting the libgomp.so. It also correctly adds a dependency on libgomp1.

> dh_shlibdeps -- --warnings=7 -v
> >> Scanning debian/libhealpix-cxx0/usr/lib/x86_64-linux-gnu/libhealpix_cxx.so.0.0.0 (for Depends field)
> Library libcfitsio.so.3 found in /usr/lib/x86_64-linux-gnu/libcfitsio.so.3
> Library libpthread.so.0 found in /lib/x86_64-linux-gnu/libpthread.so.0
> Library libstdc++.so.6 found in /usr/lib/x86_64-linux-gnu/libstdc++.so.6
> Library libm.so.6 found in /lib/x86_64-linux-gnu/libm.so.6
> Library libc.so.6 found in /lib/x86_64-linux-gnu/libc.so.6
> Library libgcc_s.so.1 found in /lib/x86_64-linux-gnu/libgcc_s.so.1
> Library libgomp.so.1 found in /usr/lib/x86_64-linux-gnu/libgomp.so.1
> Using symbols file /var/lib/dpkg/info/libc6:amd64.symbols for libpthread.so.0
> Using symbols file /var/lib/dpkg/info/libgomp1:amd64.symbols for libgomp.so.1
> Using symbols file /var/lib/dpkg/info/libstdc++6:amd64.symbols for libstdc++.so.6
> Using symbols file /var/lib/dpkg/info/libc6:amd64.symbols for libc.so.6
> Using symbols file /var/lib/dpkg/info/libc6:amd64.symbols for libm.so.6
> Using symbols file /var/lib/dpkg/info/libgcc1:amd64.symbols for libgcc_s.so.1
> Using symbols file /var/lib/dpkg/info/libcfitsio3:amd64.symbols for libcfitsio.so.3


It even works when I build with pbuilder on my own machine.

I found an earlier thread that may be related:
https://lists.debian.org/debian-devel/2011/03/msg01198.html

In the end, it seems like the suggestion there is to make certain that -fopenmp flag is being passed when linking:

> You normally don't (need to) link to gomp explicitly. My wild guess is: Dmitry used -fopenmp while compiling *.o, but not when linking the shared library.

What have I missed?

Thanks,
Leo Singer
Graduate Student @ LIGO-Caltech


Reply to: