[R-SIG-Mac] R-3.0.0: choice of gfortran compiler in install.packages()

Prof Brian Ripley ripley at stats.ox.ac.uk
Fri May 10 08:03:01 CEST 2013


On 09/05/2013 17:36, Davor Cubranic wrote:
> I don't see any mention in the admin manual that GCC add-ons are no longer recommended. The section you linked to says: "Other compilers from http://r.research.att.com/tools/ can also be used." That tools page further says: "Note: If you are interested in cutting-edge compilers and/or integration of GNU Fortran and Apple's compilers see gcc 4.2 section below." That's what I was using, "gcc-4.2 (Apple build 5666.3) with GNU Fortran 4.2.4 for Mac OS X 10.7 (Lion)", since I use XCode and liked the integration. I should have noted that in my message, although I didn't know that the path would be different.

You don't see any mention that they are recommended ....

> Davor
>
> On 2013-05-08, at 11:40 PM, Prof Brian Ripley wrote:
>
>> Note that the recommended CRAN gfortran *does* go into /usr/local.  This one: http://cran.r-project.org/bin/macosx/tools/gfortran-4.2.3.pkg as described at http://cran.r-project.org/doc/manuals/r-release/R-admin.html#OS-X .
>>
>> That's for R 3.0.0: other versions were recommended for earlier versions as add-ons to gcc versions which are no longer recommended.
>>
>> If you are not using the recommended compiler with a CRAN binary build you should set some variables in ~/.R/Makevars: see http://cran.r-project.org/doc/manuals/r-release/R-admin.html#OS-X-packages .
>>
>> On 08/05/2013 23:28, Davor Cubranic wrote:
>>> I don't see this on my  machine:
>>>
>>>> install.packages('fields', type='source')
>>> * installing *source* package 'fields' ...
>>> ** package 'fields' successfully unpacked and MD5 sums checked
>>> ** libs
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c css.f -o css.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c csstr.f -o csstr.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c cvrf.f -o cvrf.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c dchold.f -o dchold.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c dcopy.f -o dcopy.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c ddfind.f -o ddfind.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c ddot.f -o ddot.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c derrb.f -o derrb.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c dlv.f -o dlv.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c dmaket.f -o dmaket.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c drdfun.f -o drdfun.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c dsetup.f -o dsetup.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c evlpoly.f -o evlpoly.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c evlpoly2.f -o evlpoly2.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c expfn.f -o expfn.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c ifind.f -o ifind.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c igpoly.f -o igpoly.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c inpoly.f -o inpoly.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c mltdrb.f -o mltdrb.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c mltdtd.f -o mltdtd.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c multeb.f -o multeb.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c multrb.f -o multrb.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c radbas.f -o radbas.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c radfn2.f -o radfn2.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c radfun.f -o radfun.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c rcss.f -o rcss.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c rcssr.f -o rcssr.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c rcsswt.f -o rcsswt.o
>>> gfortran-4.2 -arch x86_64   -fPIC  -g -O2  -c sortm.f -o sortm.o
>>> llvm-gcc-4.2 -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/lib -L/usr/local/lib -o fields.so css.o csstr.o cvrf.o dchold.o dcopy.o ddfind.o ddot.o derrb.o dlv.o dmaket.o drdfun.o dsetup.o evlpoly.o evlpoly2.o expfn.o ifind.o igpoly.o inpoly.o mltdrb.o mltdtd.o multeb.o multrb.o radbas.o radfn2.o radfun.o rcss.o rcssr.o rcsswt.o sortm.o -L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64 -L/usr/local/lib/x86_64 -L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3 -lgfortran -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
>>> ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64'
>>> ld: warning: directory not found for option '-L/usr/local/lib/x86_64'
>>> ld: warning: directory not found for option '-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3'
>>> installing to /private/tmp/library/fields/libs
>>> ** R
>>> ** data
>>> ** preparing package for lazy loading
>>> ** help
>>> *** installing help indices
>>> ** building package indices
>>> ** testing if installed package can be loaded
>>> * DONE (fields)
>>>
>>> I'm also running R-3.0.0 and OS X 10.7.5, so I think the issue is your environment. Why do you have gfortran in /usr/local anyways? CRAN's fortran goes into /usr/bin.
>>>
>>> Note that you set FC and F77 to "gfortran-4.2" (no path), so that will look for it in your PATH, and you probably have /usr/local/gfortran/bin before /usr/bin. Try either removing /usr/local/gfortran directory or make sure the one in /usr/bin is found first.
>>>
>>> Davor
>>>
>>> On 2013-05-07, at 4:30 PM, Andy Jacobson (NOAA Affiliate) wrote:
>>>
>>>> Howdy,
>>>>
>>>> I am attempting to install the fields_6.7.6 package under R-3.0.0 on OS X 10.7.5.  I think the install process is calling the wrong gfortran compiler.  The compiler being called is /usr/local/gfortran/bin/gfortran, which is "GNU Fortran (GCC) 4.4.0 20090321 (experimental) [trunk revision 144983]".  I've installed the gfortran-4.2.3.pkg package from http://cran.r-project.org/bin/macosx/tools/gfortran-4.2.3.pkg.
>>>>
>>>> The /Library/Frameworks/R.framework/Versions/3.0/Resources/etc/Makeconf file specifies:
>>>>
>>>> FC = gfortran-4.2 -arch x86_64
>>>> and
>>>> F77 = gfortran-4.2 -arch x86_64
>>>>
>>>> The text output from install.packages() shows lots of -c compilation using this wrong gfortran, then attempts to link with llvm-gcc-4.2.  The linking step complains about the .o files being architecture i386, which is probably wrong output from the gfortran-4.4.0 compiler:
>>>>
>>>>> /usr/local/gfortran/bin/gfortran   -fPIC  -g -O2  -c sortm.f -o sortm.o
>>>>> llvm-gcc-4.2 -arch x86_64 -std=gnu99 -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/usr/local/gfortran/lib/ -o fields.so css.o csstr.o cvrf.o dchold.o dcopy.o ddfind.o ddot.o derrb.o dlv.o dmaket.o drdfun.o dsetup.o evlpoly.o evlpoly2.o expfn.o ifind.o igpoly.o inpoly.o mltdrb.o mltdtd.o multeb.o multrb.o radbas.o radfn2.o radfun.o rcss.o rcssr.o rcsswt.o sortm.o -L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64 -L/usr/local/lib/x86_64 -L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3 -lgfortran -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
>>>>> ld: warning: ld: warning: ignoring file css.o, file was built for i386 which is not the architecture being linked (x86_64): css.oignoring file csstr.o, file was built for i386 which is not the architecture being linked (x86_64): csstr.o
>>>>
>>>>
>>>>
>>>> There's no Makefile in the fields package, so FC and F77 are not being overridden by the package itself, I believe.  The FC and F77 variables from R's Makeconf are not being respected, and I've tried to specify alternative gfortran compilers with syntax like:
>>>>
>>>>
>>>> install.packages("fields",type="source",repos="http://cran.us.r-project.org",clean=TRUE,configure.vars=list(F77="gfortran-4.2 -arch x86_64",FC="gfortran-4.2 -arch x86_64"))
>>>>
>>>> Nothing I do seems to tell the fields package to use the proper gfortran compiler.  I have no environment variables like FC or F77 defined.  I have to admit that I do have four different gfortran versions installed on this machine:  in addition to the R pkg version and the gfortran-4.4.0, there's a fink /sw/bin/gfortran 4.6.2, and a /usr/bin/gfortran-4.2 which claims to come from Apple (GNU Fortran (GCC) 4.2.1 (Apple Inc. build 5566)).  I'm up to date with Xcode.
>>>>
>>>> Any advice about how to do this correctly would be much appreciated!
>>>>
>>>> Thanks,
>>>>
>>>> Andy
>>>> --
>>>> 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
>>>>
>>>> _______________________________________________
>>>> R-SIG-Mac mailing list
>>>> R-SIG-Mac at r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>
>>> _______________________________________________
>>> R-SIG-Mac mailing list
>>> R-SIG-Mac at r-project.org
>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>
>>
>>
>> --
>> Brian D. Ripley,                  ripley at stats.ox.ac.uk
>> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
>> University of Oxford,             Tel:  +44 1865 272861 (self)
>> 1 South Parks Road,                     +44 1865 272866 (PA)
>> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>>
>> _______________________________________________
>> R-SIG-Mac mailing list
>> R-SIG-Mac at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595



More information about the R-SIG-Mac mailing list