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

Re: dh_shlibdeps warnings concerning undefined OpenMP symbols



On 31.03.2011 22:16, Jakub Wilk wrote:
>> You do need -lgomp.
> 
> 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.

Exactly! Thank you, Jakub, for nice guess.
AC_OPENMP() macro documentation looks to be a bit incomplete (e.g. if it
provides $OPENMP_LDFLAGS I wouldn't mess things), so I believe the
correct sequence looks like this:

AC_OPENMP()
CPPFLAGS="${OPENMP_CFLAGS} ${CPPFLAGS}"
CXXFLAGS="${OPENMP_CXXFLAGS} ${CXXFLAGS}"
LDFLAGS="${OPENMP_CXXFLAGS} ${LDFLAGS}"

On 01.04.2011 14:47, Jakub Wilk wrote:
> I don't think there's anything wrong with this macro. CXXFLAGS should be
> used both for compiling and linking. At least this is what GNU make do
> by default:
> 
> $ make -p 2>/dev/null | grep 'LINK.cc = '
> LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH)

Thank you! It looks like I need to use $(LINK.cc) to link the .so library.

I also was suggested this resource:
> http://wiki.debian.org/ToolChain/DSOLinking#Unresolved_symbols_in_shared_libraries
which explains that this warning is raised, when the dependency chain is
like "A -> B -> C", and A needs symbols from C, but has no direct
dependency "A -> C" (which should be introduced as Brian also mentioned).

Thanks a lot for help to everyone!

-- 
With best regards,
Dmitry


Reply to: