From marko.robnik at fri.uni-lj.si  Fri Nov 19 16:58:40 2010
From: marko.robnik at fri.uni-lj.si (=?iso-8859-2?Q?Marko_Robnik-=A9ikonja?=)
Date: Fri, 19 Nov 2010 16:58:40 +0100
Subject: [Rd] gomp library with Rtools212
Message-ID: <001c01cb8802$a3055960$e9100c20$@fri.uni-lj.si>

Dear developers,

I am a maintainer of the CORElearn package which uses OpenMP multithreading
to speed up some computations. When producing a new release we tested the
package with the latest R 2.12.0. On Linux the package works normally. On
Windows we installed a recommended version of Rtools (Rtools212) but the
linker fails with the messages below.  

...
g++ -I"C:/Util/R/R-2.12.0/include"      -fopenmp   -O2 -Wall  -c
trutilReg.cpp -o trutilReg.o
g++ -I"C:/Util/R/R-2.12.0/include"      -fopenmp   -O2 -Wall  -c utils.cpp
-o utils.o
g++ -shared -s -static-libgcc -o CORElearn.dll tmp.def Rconvert.o Rfront.o
binarize.o binarizeReg.o binnode.o binnodeReg.o binpart.o bintree.o
bintreeReg.o c45read.o calibrate.o constrct.o constrctReg.o cost.o
dataStore.o error.o estCommon.o estOrdAttr.o estimator.o estimatorReg.o
expr.o exprReg.o frontend.o ftree.o kdtree.o mathutil.o menu.o model.o
modelReg.o mstring.o new_new.o nrutil.o options.o printUtil.o prune.o
pruneReg.o random.o regtree.o relieff.o rfRegularize.o rfUtil.o rndforest.o
rrelieff.o treenode.o treenodeReg.o trutil.o trutilReg.o utils.o -fopenmp
-LC:/Util/R/R-2.12.0/bin/i386 -lR
c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te
xt+0x19): undefined reference to `_imp__pthread_getspecific'
c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te
xt+0x7a): undefined reference to `_imp__pthread_mutex_lock'
c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te
xt+0x9a): undefined reference to `_imp__pthread_mutex_unlock'
c:/util/rtools/mingw/bin/../lib/gcc/mingw32/4.5.0/libgomp.a(parallel.o):(.te
xt+0xfa): undefined reference to `_imp__pthread_getspecific'
... 
hundreds of error messages follow...

On R 2.11.1 and 32 bit Windows the package worked fine. Since Rtools now
uses gcc 4.5.0 and libgomp-4.5.0, which do support OpenMP,  I do not know
what is wrong.
In Makevars.win I use
PKG_CXXFLAGS = -fopenmp
PKG_LIBS = -fopenmp

Suspecting that errors may be caused by a wrong underscore convention  I
experimented with the SYMPAT variable in etc/Makeconf, but without success.
My guess is that gomp library provided with Rtools212 is using a different
underscore convention as the rest of the gcc. Can you suggest some solution,
please?

Best regards,

Marko



[Rd] gomp library with Rtools212
=?iso-8859-2?Q?Marko_Robnik-=A9ikonja?=