[BioC] Compiling graph on solaris

Hervé Pagès hpages at fhcrc.org
Fri Sep 18 08:37:35 CEST 2009

Hi Mark,

The graph package is doing something quite non-standard by adding
explicitly -o BioC_graph.so to the gcc arguments in order to take
control over the name given to the shared object (otherwise, by
default, this object would be called graph.so).
This was achieved by adding a Makevars file to the package with
the following line in it:

   PKG_LIBS=-o BioC_graph.so

At compilation time the value of PKG_LIBS is inserted in the
gcc command *after* -o graph.so, and, so far, the trick worked
fine on many platforms, because ld on these platforms was using
the last -o setting.
Your ld command seems to behave differently though. What's its
version? Is it GNU ld? We have GNU ld v2.19 on our Linux build
I don't know what the solution is but any additional information
you can provide about your ld/gcc could help. Also you could check
your ld man page for any hint.


Mark Cowley wrote:
> Dear list,
> I just upgraded to R 2.9.2, on solaris 10, and stumbled across a  
> problem with graph.
> The package installed with 1 warning, but no errors. When I load it, I  
> get the following error:
>  > library(graph)
> Error in library.dynam(lib, package, package.lib) :
>    shared library 'BioC_graph' not found
> Error: package/namespace load failed for 'graph'
> This is using the version of graph that biocLite downloaded for me
>     Using R version 2.9.2, biocinstall version 2.4.12.
>     Installing Bioconductor version 2.4 packages:
> I looked more closely at the install output, and spotted the problem,  
> but don't know how to fix it:
> $ R CMD INSTALL -l /usr/local/R/library graph
> * Installing *source* package 'graph' ...
> ** libs
> gcc -std=gnu99 -I/usr/local/R-2.9.2/lib/R/include  -I/usr/local/ 
> include    -fpic  -I/usr/local/include -c graph.c -o graph.o
> gcc -std=gnu99 -G -L/usr/local/lib -o graph.so graph.o -o  
> BioC_graph.so -L/usr/local/R-2.9.2/lib/R/lib -lR
> ld: warning: option -o appears more than once, first setting taken
> ** R
> ** data
> ** inst
> ** preparing package for lazy loading
> ** help
> *** installing help indices
>   >>> Building/Updating help pages for package 'graph'
>       Formats: text html latex example
> Note: ignoring empty \keyword entries in file 'graphRendering.Rd'
> Note: removing empty section \details in file 'graphRendering.Rd'
> Note: removing empty section \examples in file 'graphRendering.Rd'
> Note: removing empty section \seealso in file 'graphRendering.Rd'
> ** building package indices ...
> * DONE (graph)
> The ld warning indicates that there are two -o statements, it chooses  
> the first, therefore ignore the '-o BioC_graph.so'.
> some googling found this message in the Bioconductor change logs (http://fgc.lsi.umich.edu/cgi-bin/blosxom3.cgi/2009/04/25 
> ):
> graph
> Renamed graph.(so/dll) BioC_graph.(so/dll) to avoid conflicts with  
> graphviz.
> googling also showed that the build logs on OSX seem to tolerate two - 
> o arguments (-o graph.so and -o BioC_graph.so)
> i'd appreciate any help
> cheers,
> Mark
> sessionInfo()
> R version 2.9.2 (2009-08-24)
> i386-pc-solaris2.10
> locale:
> C
> attached base packages:
> [1] stats     graphics  grDevices utils     datasets  methods   base
> loaded via a namespace (and not attached):
> [1] tcltk_2.9.2 tools_2.9.2
> 	[[alternative HTML version deleted]]
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/bioconductor
> Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor

Hervé Pagès

Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Ave. N, M2-B876
P.O. Box 19024
Seattle, WA 98109-1024

E-mail: hpages at fhcrc.org
Phone:  (206) 667-5791
Fax:    (206) 667-1319

More information about the Bioconductor mailing list