Dear Simon,
Thank you for your suggestions, which I have just tried. Sadly the error
remains the same.
The problem seems to be that for some reason
"gfortran-4.2-5564-darwin9.tar.gz" does not have a
"/usr/lib/gcc/i686-apple-darwin9/4.2.1/x86_64" directory containing
libgfortranbegin.a. For this reason the 64 bit version of
libgfortranbegin.a is not installed in the corresponding directory
x86_64 which contains only libgcc.a etc.
You can see this by double-clicking on
"gfortran-4.2-5564-darwin9.tar.gz" when located in some directory.
In contrast, "gfortran-4.2.3.dmg" did install libgfortranbegin.a in the
"/usr/local/lib/gcc/i686-apple-darwin9/4.2.1/x86_64" directory.
Could you please check or tell me what the reason might be?
I have installed it using:
$ gunzip gfortran-4.2-5564-darwin9.tar.gz
$ sudo tar -xvf gfortran-4.2-5564-darwin9.tar -C /
Best regards
Christian
Simon Urbanek wrote:
On Jan 24, 2010, at 3:28 PM, cstrato wrote:
Dear Kasper,
You are right. Since ROOT supports the CC, CXX, F77 and LD flags I did:
./configure macosx64 --with-cxx="/usr/bin/g++-4.2 -arch x86_64"
--with-f77="/usr/bin/gfortran-4.2 -arch x86_64"
You don't really need the override - it works without and they add -m64 anyway
so the -arch gets essentially ignored.
The error was still the same:
i686-apple-darwin9-g++-4.2.1: libgfortran.dylib: No such file or directory
However, when I replaced in the Makefile.macosx64:
F77LIBS := $(shell $(F77) -m64 -print-file-name=libgfortran.dylib)
F77LIBS += $(shell $(F77) -m64 -print-file-name=libgfortranbegin.a)
with:
F77LIBS := $(shell $(F77) -m64 -print-file-name=libgfortranbegin.a)
You found the right spot but your fix is wrong - just remove the two lines,
they are superfluous and only cause trouble.
the error disappeared, and I could finish the compilation.
However, now I got a link-error:
ld warning: in /usr/lib/gcc/i686-apple-darwin9/4.2.1/libgfortranbegin.a, file
is not of required architecture
Undefined symbols:
"_main", referenced from:
start in crt1.10.5.o
Your'e getting the 32-bit version (of the wrong file - see above). It should
really be ../4.2.1/x86_64/lib...
I am not sure what this error means since Makefile.macosx64 contains:
F77FLAGS = -m64 -std=legacy
Could it be that libgfortranbegin.a can only be used for 32bit compilation?
No, you're picking the wrong one - there is one for each architecture.
Furthermore, I still have the question (and hopefully Simon will answer it):
Why does gfortran-4.2-5564-darwin9.tar.gz not contain any libgfortran.dylib
files?
Because it's using a static library.
Interestingly, when googling "/usr/lib/libgfortran.dylib" I get the answer that NO results were
found, while googling "/usr/local/lib/libgfortran.dylib" gives many results. Thus it seems that
there will never be any libgfortran.dylib in "/usr/lib/"!?
Nope - OS X has no Fortran by default.
Cheers,
Simon
I must admit that I do not understand this issue.
Best regards
Christian
Kasper Daniel Hansen wrote:
On Jan 23, 2010, at 8:37 AM, cstrato wrote:
Dear Kasper,
Thank you for your suggestion, I did indeed use gcc 4.0.
Since gcc_select does no longer exist on Leopard I had to do:
cd /usr/bin
sudo ln -s gcc-4.2 gcc
sudo ln -s g++-4.2 g++
sudo ln -s gcov-4.2 gcov
I am not sure this is advisable in general. When I compile stuff with gcc-4.2
I usually explicitly set
CC=/usr/bin/gcc-4.2
when I run configure. For example, my entire configure line for R on my
macbook is
../${SRCDIR}/configure SHELL='/bin/bash' \
CC="/usr/bin/gcc-4.2 -arch x86_64 -std=gnu99" \
CFLAGS="-g -O2 -std=gnu99 -march=nocona" \
CXX="/usr/bin/g++-4.2 -arch x86_64" \
CXXFLAGS="-g -O2 -march=nocona" \
OBJC="/usr/bin/gcc-4.2 -arch x86_64" \
F77="/usr/bin/gfortran-4.2 -arch x86_64" \
FFLAGS="-g -O2 -march=nocona" \
FC="/usr/bin/gfortran-4.2 -arch x86_64" \
FCFLAGS="-g -O2 -march=nocona" \
--x-includes=/usr/X11/include --x-libraries=/usr/X11/lib \
--with-system-zlib \
--with-blas='-framework vecLib' --with-lapack
Of course this requires that ROOT uses the CC/CFLAGS macros, but that should
be pretty standard if it uses autoconf.
Sadly, compiling ROOT resulted still in the same error:
i686-apple-darwin9-g++-4.2.1: libgfortran.dylib: No such file or directory
When I check the location for gfortran-4.2.3.dmg I get:
$ cd /usr/local/lib/gcc/i686-apple-darwin8/4.2.3/../../../x86_64
$ ls -al
total 32
drwxrwxr-x 6 root wheel 204 Jan 21 20:26 .
drwxr-xr-x 35 root wheel 1190 Jan 21 20:26 ..
lrwxr-xr-x 1 root wheel 26 Jan 21 20:26 libgfortran.2.0.0.dylib ->
../libgfortran.2.0.0.dylib
lrwxr-xr-x 1 root wheel 23 Jan 21 20:26 libgfortran.2.dylib ->
libgfortran.2.0.0.dylib
lrwxr-xr-x 1 root wheel 16 Jan 21 20:26 libgfortran.a -> ../libgfortran.a
lrwxr-xr-x 1 root wheel 23 Jan 21 20:26 libgfortran.dylib ->
libgfortran.2.0.0.dylib
This means that /usr/local/bin does contain libgfortran.dylib whereas /usr/bin
does not contain any of these files or links.
Does this mean that gfortran-4.2.3.dmg does contain these file for
libgfortran.dylib while gfortran-4.2-5564-darwin9.tar.gz does not contain these
files?
How do I get libgfortran.dylib?
Simon might be able to answer this better, but the general idea is that the
gfortran-4.2-5564-darwin9.tar.gz
installs into /usr/bin
gfortran-4.2.3.dmg
installs into /usr/local/bin. There is some logic here, the way I think about
it is that the former is a direct extension of the Apple build.
I would start from scratch, which means remove all traces of both gfortrans,
install the 5564-tarball and then set the various macros as I have set it above
for R (your exact values may of course be different depending on what machine
etc. you are using).
Kasper
BTW, I must apologize to Simon. On his website he lists the commands how to
install gfortran.tar.gz, but in the Tiger section, so I did miss it.
Nevertheless it would still be helpful for Mac users to know how to uninstall
it:
$ tar -tf gfortran.tar | sort -r | (cd /; xargs -p -n 1 rm -d)
Best regards
Christian
Kasper Daniel Hansen wrote:
Remember that Apple has two version of GCC on Leopard: 4.0 and 4.2. You are
using 4.0, you might want to switch to 4.2. In Tiger there used to be
gcc_select (or select_gcc) that let you choose between 3.x and 4.0, I don't
remember if that is still around on Leopard.
The error seems to indicate that you need 4.2 in order to use Simon's gfortran.
Kasper
On Jan 22, 2010, at 16:04 PM, cstrato wrote:
Dear Simon,
Thank you for this information.
Now I have installed gfortran-4.2-5564-darwin9.tar.gz on Leopard and tried to
compile ROOT again, but this time I got the following error:
g++ -dynamiclib -single_module -undefined dynamic_lookup -install_name
@rpath/libminicern.so -O2 -m64 -o lib/libminicern.so
misc/minicern/src/cernlib.o -ldl misc/minicern/src/hbook.o
misc/minicern/src/kernlib.o misc/minicern/src/zebra.o libgfortran.dylib
/usr/lib/gcc/i686-apple-darwin9/4.2.1/libgfortranbegin.a
i686-apple-darwin9-g++-4.0.1: libgfortran.dylib: No such file or directory
I know that this is not necessarily an R-related question but I would greatly
appreciate your help if possible (at least it is a Mac- and somehow a
BioC-related question).
When I have tried to compile ROOT with gfortran-4.2.3.dmg I got the following
error:
gfortran -O2 -m64 -o bin/g2root main/src/g2root.o -Llib lib/libminicern.so
/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/../../../x86_64/libgfortran.dylib
/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/x86_64/libgfortranbegin.a -lm
-Wl,-rpath,@loader_path/../lib -pthread -ldl
ld: -rpath can only be used when targeting Mac OS X 10.5 or later
As you can see gfortran-4.2.3 could find libgfortran.dylib at:
/usr/local/lib/gcc/i686-apple-darwin8/4.2.3/../../../x86_64/libgfortran.dylib
while gfortran-4.2.4 could not find libgfortran.dylib.
Thus maybe I did make a mistake when installing gfortran-4.2.4. Here is what I
did:
$ gunzip gfortran-4.2-5564-darwin9.tar.gz
$ sudo tar -xvf gfortran-4.2-5564-darwin9.tar -C /
$ sudo ln -s /usr/bin/gfortran-4.2 /usr/bin/gfortran
Do you know what I need to do so that libgfortran.dylib can be found?
P.S.:Since many Mac users are no Unix experts please allow me to suggest to
place on your website the commands to install/uninstall gfortran. I have found
the following website, which told me how to install gfortran and how I could
uninstall it:
http://www.webmo.net/support/fortran_osx.html
Thank you in advance.
Best regards
Christian
Simon Urbanek wrote:
On Jan 21, 2010, at 15:56 , cstrato wrote:
Dear Simon,
One more question:
I have just unzipped gfortran-4.2-5564-darwin9.tar.gz. The version gives:
Using built-in specs.
Target: i686-apple-darwin9
Configured with: /Builds/gcc/gcc_42-5564/build/obj/src/configure
--disable-checking --enable-werror --prefix=/usr --mandir=/usr/share/man
--enable-languages=c,objc,c++,obj-c++,fortran
--program-transform-name=/^[cg][^.-]*$/s/$/-4.2/
--with-gxx-include-dir=/usr/include/c++/4.0.0 --with-slibdir=/usr/lib
--build=i686-apple-darwin9 --host=i686-apple-darwin9 --target=i686-apple-darwin9
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5564)
This means that this version seems to be older than the one I am using now?
No, that is GNU Fortran 4.2.4 that I was referring to. The "gcc version 4.2.1"
comes from Apple's Xcode 3.1 gcc-4.2 branch since that is what they define - it just adds
Fortran support to the existing gcc 4.2.1 branch of Apple that you installed as Xcode.
However, the Fortran part is merged from the GNU Fortran 4.2.4 release - hence I refer to
it as 4.2.4.
Cheers,
Simon
Simon Urbanek wrote:
On Jan 21, 2010, at 14:47 , cstrato wrote:
Dear all,
I have the following problem:
My Bioconductor package xps requires both R and ROOT, whereby I compile ROOT
usually from source. Until now this has not been a problem since I do all my
development on Tiger. However, now I wanted to compile ROOT on Leopard but
failed since my gfortran compiler is too old, see:
http://root.cern.ch/phpBB2/viewtopic.php?t=9721&sid=003b01ddb64f33dbe0c74651ee089c34
To solve the problem I should upgrade to the latest version coming with gcc-4.4 in
Fink.
I would advise against that - using gcc from Fink usually calls for a disaster.
The real solution is to fix their flags, but that's another story ...
Thus my question is:
Can I also use this version for R or do I need to use the version downloaded
from att?
I would recommend using the Leopard gfortran 4.2.4 for Xcode 3.1.x from the Mac
devel page
http://r.research.att.com/tools/
which I assume is what you meant by the latter.
Cheers,
Simon
_______________________________________________
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