From samsiddhi.bhattacharjee at gmail.com  Sun Jan 11 00:54:52 2009
From: samsiddhi.bhattacharjee at gmail.com (Samsiddhi Bhattacharjee)
Date: Sat, 10 Jan 2009 18:54:52 -0500
Subject: [Rd] Problem with compiling shared C/C++ library for loading into R
	(Linux)
In-Reply-To: <2c0ef9870901101540l1adfcba8x31058f5643c69882@mail.gmail.com>
References: <2c0ef9870901101540l1adfcba8x31058f5643c69882@mail.gmail.com>
Message-ID: <2c0ef9870901101554q11b48419s95730dfa5dc10e5c@mail.gmail.com>

Dear all,

I am using the .Call interface to call c++ code from R. For that, I am
trying to create a dynamic library (mylib.so)
using "R CMD SHLIB" by linking my own c++ code and an external c++
library (blitz++).

The makefile works fine on my Mac, produces mylib.so and I am able to
call .Call() from R,  but on a linux
server (I think Debian),  I got the following error:

----------
/usr/bin/ld: /somepath/blitz/lib/libblitz.a(globals.o):
relocation R_X86_64_32 against `a local symbol' can not be used when
making a shared object; recompile with -fPIC
/somepath/blitz/lib/libblitz.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
----------

I tried recompiling the blitz++ library with the -fPIC flag, and then
linking using -fPIC, it went thorugh without error
producing a "mylib.so" file.  But when I tried "dyn.load(mylib.so)"
from R, I got the error:

----------
Error in dyn.load("mylib.so") :
 unable to load shared library '/somepath/mylib.so':
 /somepath/mylib.so: undefined symbol: _ZSt4cerr
---------

I will really appreciate any help or advice on this problem.

--Samsiddhi Bhattacharjee



[Rd] Problem with compiling shared C/C++ library for loading into R (Linux)
Samsiddhi Bhattacharjee