[BioC] RCurl loading problem with 64 bit linux distribution

Joern Toedling toedling at ebi.ac.uk
Wed May 7 13:24:12 CEST 2008


Hello,
unfortunately I cannot provide a solution, but maybe I can give some more details that may help to
pinpoint the source of the problem.
I get exactly the same error message as Mark on R-2.8.0, when trying to install R-Curl_0.9-1 and then attach it:
Indeed, upon using nm to look at RCurl.so, the output
...
000000000209420 D CurlOptionNames
                 U Curl_base64_decode
                 U Curl_base64_encode
...
indicates that Curl_base64_encode is not defined.
Removing the execute bit before installation, as Martin suggested, unfortunately did not solve the problem. 
Strangely enough, with R-Curl_0.8-3, it was defined as 
0000000000003978 T Curl_base64_encode
but then when trying to attach RCurl I got 

> library("RCurl")

Error in dyn.load(file, DLLpath = DLLpath, ...) :

  unable to load shared library '/home/toedling/rpackages/RCurl/libs/RCurl.so':

  /home/toedling/rpackages/RCurl/libs/RCurl.so: undefined symbol: allocString

Looking at the RCurl web page of changes

http://www.omegahat.org/RCurl/Changes.html

it seemed that they were aware of the allocString issue and fixed it in R-0.9-0, 
but maybe then introduced the Curl_base64_encode issue.

Any more suggestions on how to fix this would be very welcome.
Below are my sessionInfo and the output upon installing RCurl-0.9-1.

Cheers,
Joern

> library("RCurl")
Error in dyn.load(file, DLLpath = DLLpath, ...) :
  unable to load shared library '/home/toedling/rpackages/RCurl/libs/RCurl.so':
  /home/toedling/rpackages/RCurl/libs/RCurl.so: undefined symbol: Curl_base64_encode
Error: package/namespace load failed for 'RCurl'
> sessionInfo()
R version 2.8.0 Under development (unstable) (2008-04-21 r45421)
x86_64-unknown-linux-gnu

locale:
LC_CTYPE=en_US.ISO-8859-1;LC_NUMERIC=C;LC_TIME=en_US.ISO-8859-1;LC_COLLATE=en_US.ISO-8859-1;LC_MONETARY=C;LC_MESSAGES=en_US.ISO-8859-1;LC_PAPER=en_US.ISO-8859-1;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_US.ISO-8859-1;LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base

other attached packages:
[1] fortunes_1.3-3

### R CMD INSTALL RCurl

* Installing *source* package 'RCurl' ...
checking for curl-config... /usr/bin/curl-config
checking for gcc... gcc
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 gcc accepts -g... yes
checking for gcc option to accept ANSI C... none needed
checking how to run the C preprocessor... gcc -E
Version has a libidn field
Using Curl_base64_encode with SessionHandle parameter.
configure: creating ./config.status
config.status: creating src/Makevars
** libs
gcc -std=gnu99 -I/home/toedling/local/R/R-devel/include  -DHAVE_LIBIDN_FIELD=1 -DBASE64_NEEDS_SESSION_DATA=1 -I/home/toedling/local/include/graphviz -I/local/include    -fpic  -I/home/toedling/local/include/graphviz -I/local/include -c base64.c -o base64.o
base64.c: In function 'R_base64_decode':
base64.c:27: warning: implicit declaration of function 'Curl_base64_decode'
base64.c: In function 'R_base64_encode':
base64.c:64: warning: implicit declaration of function 'Curl_base64_encode'
gcc -std=gnu99 -I/home/toedling/local/R/R-devel/include  -DHAVE_LIBIDN_FIELD=1 -DBASE64_NEEDS_SESSION_DATA=1 -I/home/toedling/local/include/graphviz -I/local/include    -fpic  -I/home/toedling/local/include/graphviz -I/local/include -c curl_base64.c -o curl_base64.o
gcc -std=gnu99 -I/home/toedling/local/R/R-devel/include  -DHAVE_LIBIDN_FIELD=1 -DBASE64_NEEDS_SESSION_DATA=1 -I/home/toedling/local/include/graphviz -I/local/include    -fpic  -I/home/toedling/local/include/graphviz -I/local/include -c curl.c -o curl.o
curl.c: In function 'getRStringsFromNullArray':
curl.c:1104: warning: assignment discards qualifiers from pointer target type
curl.c:1107: warning: assignment discards qualifiers from pointer target type
gcc -std=gnu99 -I/home/toedling/local/R/R-devel/include  -DHAVE_LIBIDN_FIELD=1 -DBASE64_NEEDS_SESSION_DATA=1 -I/home/toedling/local/include/graphviz -I/local/include    -fpic  -I/home/toedling/local/include/graphviz -I/local/include -c curlInit.c -o curlInit.o
gcc -std=gnu99 -I/home/toedling/local/R/R-devel/include  -DHAVE_LIBIDN_FIELD=1 -DBASE64_NEEDS_SESSION_DATA=1 -I/home/toedling/local/include/graphviz -I/local/include    -fpic  -I/home/toedling/local/include/graphviz -I/local/include -c enums.c -o enums.o
gcc -std=gnu99 -I/home/toedling/local/R/R-devel/include  -DHAVE_LIBIDN_FIELD=1 -DBASE64_NEEDS_SESSION_DATA=1 -I/home/toedling/local/include/graphviz -I/local/include    -fpic  -I/home/toedling/local/include/graphviz -I/local/include -c memoryManagement.c -o memoryManagement.o
memoryManagement.c: In function 'RCurl_releaseManagerMemoryTickets':
memoryManagement.c:143: warning: passing argument 1 of 'free' discards qualifiers from pointer target type
gcc -std=gnu99 -shared -L/home/toedling/local/lib/graphviz -L/home/toedling/local/lib -o RCurl.so base64.o curl_base64.o curl.o curlInit.o enums.o memoryManagement.o -L/usr/lib64 -lcurl -lidn -lssl -lcrypto -ldl -lz
** R
** inst
** preparing package for lazy loading
** help
 >>> Building/Updating help pages for package 'RCurl'
     Formats: text html latex example
Note: removing empty section \examples
Note: removing empty section \references
Note: removing empty section \seealso
Note: removing empty section \examples
Note: unmatched right brace in 'MultiCURLHandle-class' on or after line 28
Note: removing empty section \examples
Note: removing empty section \examples
Note: removing empty section \examples
Note: removing empty section \examples
** building package indices ...
* DONE (RCurl)



Martin Morgan wrote:
> Hi Mark...
>
> A couple of shots in the dark, as no one else seems to be leaping in...
>
> The symbol Curl_base64_encode should be defined in
> /home/mkimpel/R_HOME/site-library-2.7.0/RCurl/libs/RCurl.so.  What
> does
>
> nm /home/mkimpel/R_HOME/site-library-2.7.0/RCurl/libs/RCurl.so
>
> say? Mine says
>
> 0000000000003980 T Curl_base64_encode
>
> with the 'T' indicating that the symbol is defined (make sure nm spits
> out a bunch of lines before concluding that Curl_base64_encode is not
> defined). 
>
> I retrieved the RCurl source, and one thing I notice is that
> RCurl/src/curl_base64.c has the 'execute' bit set, and perhaps a sane
> system would not compile it. Try
>
> % chmod -x RCurl/src/curl_base64.c
>
> and then
>
> % R CMD INSTALL RCurl
>
> Martin
>
> "Mark Kimpel" <mwkimpel at gmail.com> writes:
>
>   
>> I'm having same problem on Ubuntu 64-bit Hardy Heron. A bunch of security
>> patches from Ubuntu came out and I installed them today. After that was when
>> I first noted the problem (affycoretools, which I use all the time, won't
>> load). Below is my initial output, what follows is my reinstallation output
>> followed by the same error messages as obtained intially. I wonder if a
>> security patch has changed Curl? Or did RCurl just change? I have been using
>> R-2.7.0 since half-way through its develoment cycle and this is a new
>> problem for me.
>>
>> Mark
>>
>>     
>>> require(RCurl)
>>>       
>> Loading required package: RCurl
>> Error in dyn.load(file, DLLpath = DLLpath, ...) :
>>   unable to load shared library
>> '/home/mkimpel/R_HOME/site-library-2.7.0/RCurl/libs/RCurl.so':
>>   /home/mkimpel/R_HOME/site-library-2.7.0/RCurl/libs/RCurl.so: undefined
>> symbol: Curl_base64_encode
>>     
>>> install.packages("RCurl")
>>>



More information about the Bioconductor mailing list