On Sep 4, 2009, at 11:27 PM, Adam D. I. Kramer wrote:

Simon,

        Thanks for your comments; responses below.

On Fri, 4 Sep 2009, Simon Urbanek wrote:

Adam,

On Sep 4, 2009, at 5:52 PM, Adam D. I. Kramer wrote:

Hi Tony and Simon,

        I was having this trouble today/yesterday and have been following
along on this thread. The solution I found was to add this to my
./configure:
LDFLAGS="-m64 -L/usr/lib/gcc/i686-apple-darwin9/4.2.1/x86_64 - lgfortran"
and
F77="gfortran -arch x86_64"

You should not touch LDFLAGS and besides F77 you'll also need to set FC.

From configure --help:
 LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
             nonstandard directory <lib dir>

...the gfortran library lives in a nonstandard directory,

Not really - it's the compiler library directory, i.e. where the compiler looks for its internal libraries. It is never used explicitly. The problem is that you're mixing compilers - you have a Leopard gfortran (see my response to John - you have the same problem) and SL gcc. That is not recommended and is likely to break in more places.


which is why I put the -L there... so I then moved -lgfortran to LIBS='-lgfortran' and things broke in the same way, as did moving the -L...-lgfortran there. Both of these need to be passed to the linker when mixing C/Fortran code.

It also throws the error "Maybe check LDFLAGS for paths to Fortran libraries?" which is what tipped me off to the fact that I should provide a link to the Fortran libraries in LDFLAGS. If this is incorrect, please let me know where to put them instead (and consider updating the configure script).


You should get a working gfortran instead - this is a problem in your setup, not configure. Unfortunately Apple has broken fortran in the gcc-4.2 tree so I don't have a working gfortran binary for Xcode 3.2, so please use the gfortran 4.2.3 from CRAN.


...this gets me through the "can't make mixed C/Fortran code" errors. However, through one hoop of fire and I'm confronted by another:
checking for iconv.h... yes
checking for iconv... no
checking for iconvlist... no
configure: error: --with-iconv=yes (default) and a suitable iconv is not
available
...this strikes me as odd. The relevant lines from the config.log file are: configure:39212: gcc -std=gnu99 -o conftest -O3 -fopenmp - mtune=native -m64 -m64 -L/usr/lib/gcc/i686-apple-darwin9/4.2.1/ x86_64 -lgfortran conftest.c -lm >&5
conftest.c: In function 'main':
conftest.c:189: warning: passing argument 1 of 'libiconvlist' from
incompatible pointer type
Undefined symbols:
"_libiconvlist", referenced from:
   _main in cc2XgkAg.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
However:
swiss:R-2.9.2$ nm /usr/lib/libiconv.dylib | grep _libiconvlist
00008807 T _libiconvlist
...I'm not sure where else configure could be trying to find libiconv,

check /usr/local/lib that is the most common problem area ...

I had, and there was no libiconv there.

I eventually solved this problem by upgrading fink

Oh, fink? Ok, that explains it all :).


to the 64bit version and installing libiconv and adding CPPFLAGS="-I/ sw/include" and adding -L/sw/lib to LDFLAGS, forcing it to link against the new library. It seems like the Apple libraries should serve the purpose, but for whatever reason they did not.


They do, but fink overrides the look up sequence since most of its stuff is incompatible with the system versions (which is why it causes such a havoc).

Cheers,
Simon


My current problem is that, during make, R complains about the lapack.so
file it has compiled from my lapack libraries (I configured with
--with-lapack="-L/usr/local -llapack -lptf77blas -lcblas -lpthread - latlas"
and a similar --with-blas):

Warning in solve.default(rgb) :
unable to load shared library '/Volumes/Tubby2/nobackup/R-2.9.2/ modules//lapack.so': dlopen(/Volumes/Tubby2/nobackup/R-2.9.2/modules//lapack.so, 6): Symbol not found: _cblas_cdotc_sub
 Referenced from: /Volumes/Tubby2/nobackup/R-2.9.2/modules//lapack.so
 Expected in: flat namespace
in /Volumes/Tubby2/nobackup/R-2.9.2/modules//lapack.so
Error in solve.default(rgb) : lapack routines cannot be loaded
Error: unable to load R code in package 'grDevices'
Execution halted

...that said, I understand that --with-lapack is "not recommended" in the admin manual, so I'm pretty much on my own here, but I'd be interested if you have an idea or two about what might be going on. _cblas_cdotc_sub is indeed in my lapack.a file (but not the lapack.so file R refers to), and I
can use _cblas_cdotc if I write some simple c code and link it against
lapack using the same flags as noted above.

My interest, really, is in whether ATLAS's LAPACK-tuning system (which is
pretty new) actually leads to speed improvements in R.  So, I don't
desperately need to use it, but am still concerned that a compile that used
to run smoothly no longer does.

--Adam


Cheers,
Simon


but
running "locate libiconv" shows versions in
/Developer/SDKs/MacOSX10.6.sdk/usr/lib/ also, which also show _libiconvlist
when I nm them.
Any suggestions? I'm not sure how to further debug this...the symbols are
there.
Cordially,
Adam
Hi Simon,
I think that you might have resolved my issue. I did not specify the arch,
so I will try that and let everyone know if that works.
Cheers,
--Tony
On Thu, Sep 3, 2009 at 4:11 PM, Simon Urbanek
<simon.urba...@r-project.org>wrote:
Tony,
On Sep 3, 2009, at 6:14 PM, Tony Chiang wrote:
So I am trying to configure and build the latest of R-devel on one of the
new Macbook Pro's running Snow leopard. I have installed the latest
X-Code
tools (downloaded from the Apple Site) and have gcc installed:
gcc --versioni686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build
5646)
So as I am trying to configure, I get this error message:
What is the exact configure command you're running? I suspect that your problem is a 32-bit vs 64-bit mismatch, because SL changed the gcc default to 64-bit whereas the gfortran default is 32-bit, so you have to make sure your archs match (depending on which you actually want to build) - ideally you should specify -arch for all compilers (as the CRAN binary does - also
see the FAQ).
Cheers,
Simon
...cut...
checking for Fortran 77 libraries of gfortran... -L/usr/local/ lib
-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3
-L/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/../../.. - lgfortranbegin
-lgfortran
checking how to get verbose linking output from gcc - std=gnu99... -v
checking for C libraries of gcc -std=gnu99...  -lcrt1.10.6.o
-L/usr/local/lib -L/usr/lib/gcc/i686-apple-darwin10/4.2.1/x86_64
-L/usr/lib/i686-apple-darwin10/4.2.1
-L/usr/lib/gcc/i686-apple-darwin10/4.2.1
-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../../i686-apple- darwin10/4.2.1
-L/usr/lib/gcc/i686-apple-darwin10/4.2.1/../../.. -lSystem
checking for dummy main to link with Fortran 77 libraries... rm:
conftest.dSYM: is a directory
none
checking for Fortran 77 name-mangling scheme... rm: conftest.dSYM: is a
directory
unknown
configure: WARNING: unknown Fortran name-mangling scheme
checking whether gfortran appends underscores to external names...
unknown
configure: error: cannot use Fortran
I have not seen any messages quite like this on the mailing list. What is pretty strange is the conftest.dSYM needs to be removed (?) for some
reason
but is a directory. Any ideas or suggestions on how to resolve this?
Best,
--Tony

    [[alternative HTML version deleted]]
_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-mac
_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-mac



_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to