[Rd] shlib problems with Intel compiler
Andy Jacobson (NOAA Affiliate)
andy.jacobson at noaa.gov
Wed Apr 22 18:40:19 CEST 2015
Hi Martyn,
Thanks for your insight, that seems pretty direct. Unfortunately, I did not compile this version of R (it's on a large supercomputer system and this version of R was installed by the admins). Using "R CMD config", I see the following relevant settings:
DYLIB_LD = icc -std=gnu99
DYLIB_LDFLAGS = -shared -openmp
LDFLAGS = -L/opt/compilers/intel/cce/9.1.039/lib -L/opt/compilers/intel/fce/9.1.033/lib -L/usr/local/lib64
SHLIB_CXXLD = icpc
SHLIB_CXXLDFLAGS =
SHLIB_LD = icc -std=gnu99
SHLIB_LDFLAGS = -shared
It looks like the SHLIB_CXXLDFLAGS is missing the "-shared -lR -L<loc-of-libR>". It's a mystery to me how R was built and configured such that it has incomplete/incorrect flags.
By trial and error I figured out how to use a .R/Makevars setting to add the required flags to SHLIB_CXXLDFLAGS. (It sure would have been useful to have a reference about the syntax and variable names that the Makevars file can contain...is that documented somewhere?)
I wonder if the recommendation for "-lR" is correct. None of the other packages are compiled with that flag, and everything seems to compile and load OK in R without using that.
Best Regards,
Andy
> On Apr 22, 2015, at 9:30 AM, Martyn Plummer <plummerm at iarc.fr> wrote:
>
> On Tue, 2015-04-21 at 11:46 -0600, Andy Jacobson (NOAA Affiliate) wrote:
>> Hi,
>>
>> I'm encountering trouble compiling caTools_1.17.1.tar.gz and
>> e1071_1.6-4.tar.gz on a Linux system using the Intel compiler suite.
>> 14 other packages I generally use installed without any trouble. I
>> notice both of these trouble packages have a C++ component, so I
>> wonder if that might be the issue. Below, there's information on my
>> platform, compiler, and some diagnostic output showing the errors.
>>
>> Advice appreciated!
>>
>> Thanks,
>>
>> Andy
>
> There are two things missing when R tries to create the shared object
> file on this line:
>
> icpc -L/usr/local/lib64 -o e1071.so Rsvm.o cmeans.o cshell.o floyd.o
> svm.o
>
> Firstly, the compiler flag "-shared" is missing. It tells the compiler
> to build a shared object instead of an executable. Secondly the linker
> flag "-lR" is missing, along with the "-L" flag that tells the linker
> where to find the shared R library.
>
> To find out what went wrong, you should share the configuration you used
> when building R.
>
> Martyn
>
>>
>>
>> Intel compiler suite: icc (ICC) 14.0.2 20140120
>>
>> sessionInfo() reports:
>>
>> R version 3.1.3 (2015-03-09)
>> Platform: x86_64-unknown-linux-gnu (64-bit)
>> Running under: Red Hat Enterprise Linux Server release 6.5 (Santiago)
>>
>> locale:
>> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
>> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
>> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
>> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
>> [9] LC_ADDRESS=C LC_TELEPHONE=C
>> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
>> loaded via a namespace (and not attached):
>> [1] tools_3.1.3
>>
>>
>> Abbreviated versions of the output from R CMD INSTALL:
>>
>> For caTools:
>>
>> * installing to library ‘/scratch3/BMC/co2/lib/R-3.1/x86_64-unknown-linux-gnu’
>> * installing *source* package ‘caTools’ ...
>> ** package ‘caTools’ successfully unpacked and MD5 sums checked
>> ** libs
>> icpc -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -fp-model precise -c Gif2R.cpp -o Gif2R.o
>> icpc -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -fp-model precise -c GifTools.cpp -o GifTools.o
>> icc -std=gnu99 -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -wd188 -ip -fp-model precise -c runfunc.c -o runfunc.o
>> icpc -L/usr/local/lib64 -o caTools.so Gif2R.o GifTools.o runfunc.o
>> /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function `_start':
>> (.text+0x20): undefined reference to `main'
>> Gif2R.o: In function `imwritegif':
>> /tmp/RtmpEfnBsm/R.INSTALL17c3a7327d4fb/caTools/src/Gif2R.cpp:19: undefined reference to `R_chk_calloc'
>> /tmp/RtmpEfnBsm/R.INSTALL17c3a7327d4fb/caTools/src/Gif2R.cpp:23: undefined reference to `R_chk_free'
>> ... (many more R_* undefined references)
>>
>> For e1071:
>>
>> * installing to library ‘/scratch3/BMC/co2/lib/R-3.1/x86_64-unknown-linux-gnu’
>> * installing *source* package ‘e1071’ ...
>> ** package ‘e1071’ successfully unpacked and MD5 sums checked
>> checking for C++ compiler default output file name... a.out
>> checking whether the C++ compiler works... yes
>> checking whether we are cross compiling... no
>> checking for suffix of executables...
>> checking for suffix of object files... o
>> checking whether we are using the GNU C++ compiler... yes
>> checking whether icpc accepts -g... yes
>> ** libs
>> icc -std=gnu99 -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -wd188 -ip -fp-model precise -c Rsvm.c -o Rsvm.o
>> icc -std=gnu99 -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -wd188 -ip -fp-model precise -c cmeans.c -o cmeans.o
>> icc -std=gnu99 -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -wd188 -ip -fp-model precise -c cshell.c -o cshell.o
>> icc -std=gnu99 -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -wd188 -ip -fp-model precise -c floyd.c -o floyd.o
>> icpc -I/apps/R/3.1.3-intel/lib64/R/include -DNDEBUG -I/usr/local/include -fpic -g -O3 -fp-model precise -c svm.cpp -o svm.o
>> icpc -L/usr/local/lib64 -o e1071.so Rsvm.o cmeans.o cshell.o floyd.o svm.o
>> /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function `_start':
>> (.text+0x20): undefined reference to `main'
>> Rsvm.o: In function `do_cross_validation':
>> /tmp/Rtmp9h7iYE/R.INSTALL1d9615a42180e/e1071/src/Rsvm.c:91: undefined reference to `GetRNGstate'
>> /tmp/Rtmp9h7iYE/R.INSTALL1d9615a42180e/e1071/src/Rsvm.c:94: undefined reference to `unif_rand'
>> /tmp/Rtmp9h7iYE/R.INSTALL1d9615a42180e/e1071/src/Rsvm.c:106: undefined reference to `PutRNGstate'
>> ... (many more undefined references)
>>
>>
>>
>>
>
--
Andy Jacobson
andy.jacobson at noaa.gov
NOAA Earth System Research Lab
Global Monitoring Division
325 Broadway R/GMD1
Boulder, Colorado 80305
303/578-2237
More information about the R-devel
mailing list