Re: [Rd] Lack of -O2 (or -O) gcc compiler flag causes package installation failure

From: Simon Urbanek <simon.urbanek_at_r-project.org>
Date: Thu, 07 Jun 2012 14:03:37 -0400

On Jun 7, 2012, at 1:32 PM, alexholehouse wrote:

> Hello all - first time poster long time reader,
>
> I'm currently working on a package, and was interested to compare
> performance with and without gcc/g++ -O based optimization. I can turn the
> -O flags off with a ~.R/Makevars file, but when I do something odd happens.
> The package installs fine when gcc is fed -O2 or -O3
>
> *install with*
> R CMD INSTALL --configure-args="CFLAGS=-g CXXFLAGS=-g --disable-openmp"
> package.tar.gz
> /NB: I have opnemp switched off here as it's not supported by Apple's GCC
> (4.2.1). When the code runs on a linux cluster it compiles with openmp and
> runs no problem./
>
> *makevars file*
> CC = gcc -arch x86_64 -std=gnu99
> CFLAGS = -g -O2 $(LTO) /# with -O2 we compile fine /
> CPICFLAGS = -fPIC
> CPPFLAGS = -I/usr/local/include
> CXX = g++ -arch x86_64
> CXXCPP = g++ -arch x86_64 -E
> CXXFLAGS = -g $(LTO)
> CXXPICFLAGS = -fPIC
>

Is this your real Makevars? That would override all R settings and break a lot of things ... You should not set anything other than PKG_xx flags in Makevars since the "regular" flags are taken from R. Providing the source of package.tar.gz would give us more insight on what you're actually doing - I suspect that the problem is in you breaking the build system and not in the optimization flags ...

Cheers,
Simon

> ... compiles and installs no problem.
>
> However, if I remove the -O (or use -O0, -O1) it fails with the following
> error
>
> ** preparing package for lazy loading
> ** help
> *** installing help indices
> ** building package indices
> ** testing if installed package can be loaded
> Error in dyn.load(file, DLLpath = DLLpath, ...) :
> unable to load shared object
> '/Users/alex/Library/R/2.15/library/citpp/libs/x86_64/citpp.so':
> dlopen(/Users/alex/Library/R/2.15/library/citpp/libs/x86_64/citpp.so, 6):
> Symbol not found: _mymax
> Referenced from:
> /Users/alex/Library/R/2.15/library/citpp/libs/x86_64/citpp.so
> Expected in: flat namespace
> in /Users/alex/Library/R/2.15/library/citpp/libs/x86_64/citpp.so
> Error: loading failed
> Execution halted
> ERROR: loading failed
> * removing ‘/Users/alex/Library/R/2.15/library/citpp’
> * restoring previous ‘/Users/alex/Library/R/2.15/library/citpp’
>
> This isn't a huge problem (for me, right now), but I don't understand why
> changing the compiler optimization level to less optimization would cause a
> dyn.load error? I can remove the optimization flag from g++ no problem. Any
> advice or ideas would be appreciated!
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Lack-of-O2-or-O-gcc-compiler-flag-causes-package-installation-failure-tp4632723.html
> Sent from the R devel mailing list archive at Nabble.com.
>
> ______________________________________________
> R-devel_at_r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel



R-devel_at_r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel Received on Thu 07 Jun 2012 - 18:06:13 GMT

This quarter's messages: by month, or sorted: [ by date ] [ by thread ] [ by subject ] [ by author ]

All messages

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Thu 07 Jun 2012 - 19:22:23 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-devel. Please read the posting guide before posting to the list.

list of date sections of archive