I've for a RHEL 4 box on a P570 system. My end user wants to have a 64-bit version of R compiled due to the large amount of memory they require (this image has 16GB allocated to it). I can compile R fine in 32-bit mode, but it can't use more than 2.4GB of RAM before it falls over and dies. Compiling in 64-bit mode for POWER systems "should" be as easy as adding a CFLAGS="-m64" FFLAGS="-m64" ./configure --without-x . It's not, and unfortunately I'm at a loss to what the problem is. Here's the last few lines of the above configure command: checking for Fortran 77 libraries of g77... -L/usr/local/lib64 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/64 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../../../lib64 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../.. -L/lib/../lib64 -L/usr/lib/../lib64 -lfrtbegin -lg2c -lm -lgcc_s_64 checking how to get verbose linking output from gcc -std=gnu99... -v checking for C libraries of gcc -std=gnu99... -L/usr/local/lib64 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/64 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../../../lib64 -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../.. -L/lib/../lib64 -L/usr/lib/../lib64 -lgcc_s_64 checking for dummy main to link with Fortran 77 libraries... none checking for Fortran 77 name-mangling scheme... lower case, underscore, extra underscore checking whether g77 appends underscores to external names... yes checking whether g77 appends extra underscores to external names... yes checking whether mixed C/Fortran code can be run... configure: WARNING: cannot run mixed C/Fortran code configure: error: Maybe check LDFLAGS for paths to Fortran libraries? Here's what looks to be the relevant part from config.log: configure:32383: checking whether mixed C/Fortran code can be run /usr/bin/ld: skipping incompatible /usr/lib/gcc/ppc64-redhat-linux/3.4.6/libgcc_s_64.so when searching for -lgcc_s_64 /usr/bin/ld: skipping incompatible /usr/lib/gcc/ppc64-redhat-linux/3.4.6/libgcc_s_64.so when searching for -lgcc_s_64 /usr/bin/ld: cannot find -lgcc_s_64 collect2: ld returned 1 exit status configure:32447: WARNING: cannot run mixed C/Fortran code configure:32449: error: Maybe check LDFLAGS for paths to Fortran libraries? This implies that configure is compiling the code in 32 bit mode (which is why it's skipping libgcc_s_64.o I guess my questions are: has anyone compiled this for this system? And if so, how did you do it? -Mark -- Mark Komarinski mark_komarinski at hms.harvard.edu Sr. Research Systems Architect http://ritg.med.harvard.edu Research IT Group Harvard Medical School
Prof Brian Ripley
2007-Dec-19 21:17 UTC
[Rd] Problem compiling R 3.6.1 on POWER 570 system
On Wed, 19 Dec 2007, Mark Komarinski wrote:> I've for a RHEL 4 box on a P570 system. My end user wants to have a > 64-bit version of R compiled due to the large amount of memory they > require (this image has 16GB allocated to it). > > I can compile R fine in 32-bit mode, but it can't use more than 2.4GB of > RAM before it falls over and dies. > > Compiling in 64-bit mode for POWER systems "should" be as easy as adding > a CFLAGS="-m64" FFLAGS="-m64" ./configure --without-x .The R-admin manual says to use CC="gcc -m64" CXX="gxx -m64" F77="gfortran -m64" FC="gfortran -m64" in several places: can you try following that (with g77 on your old OS, and presumably not FC if you don't have an F90 compiler).> It's not, and unfortunately I'm at a loss to what the problem is. > Here's the last few lines of the above configure command: > > checking for Fortran 77 libraries of g77... -L/usr/local/lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../../../lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../.. -L/lib/../lib64 > -L/usr/lib/../lib64 -lfrtbegin -lg2c -lm -lgcc_s_64 > checking how to get verbose linking output from gcc -std=gnu99... -v > checking for C libraries of gcc -std=gnu99... -L/usr/local/lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../../../lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../.. -L/lib/../lib64 > -L/usr/lib/../lib64 -lgcc_s_64 > checking for dummy main to link with Fortran 77 libraries... none > checking for Fortran 77 name-mangling scheme... lower case, underscore, > extra underscore > checking whether g77 appends underscores to external names... yes > checking whether g77 appends extra underscores to external names... yes > checking whether mixed C/Fortran code can be run... configure: WARNING: > cannot run mixed C/Fortran code > configure: error: Maybe check LDFLAGS for paths to Fortran libraries? > > Here's what looks to be the relevant part from config.log: > configure:32383: checking whether mixed C/Fortran code can be run > /usr/bin/ld: skipping incompatible > /usr/lib/gcc/ppc64-redhat-linux/3.4.6/libgcc_s_64.so when searching for > -lgcc_s_64 > /usr/bin/ld: skipping incompatible > /usr/lib/gcc/ppc64-redhat-linux/3.4.6/libgcc_s_64.so when searching for > -lgcc_s_64 > /usr/bin/ld: cannot find -lgcc_s_64 > collect2: ld returned 1 exit status > configure:32447: WARNING: cannot run mixed C/Fortran code > configure:32449: error: Maybe check LDFLAGS for paths to Fortran libraries? > > This implies that configure is compiling the code in 32 bit mode (which > is why it's skipping libgcc_s_64.o > > I guess my questions are: has anyone compiled this for this system? And > if so, how did you do it? > > -Mark > >-- 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
Mark, My sysadmin has helped me install R on our Power cluster. This is not my area of expertise, but I will pass along his directions, which got me up and running: To quote him, "Our machine, BigRed runs SuSE Linux Enterprise Server 9, Service Pack 3. The OS is 64-bit, but there are 32-bit compatibility libraries, and many (perhaps most) of the system utilities are 32-bit. The processors on the user and compute blades are PowerPC 970MP (dual-core)." Here is the script I used, your install directories and location of x-libraries of course may need to be changed. Good luck and let the list know what ends up working for you. Mark Kimpel cd ~/R_HOME wget ftp://ftp.stat.math.ethz.ch/Software/R/R-devel.tar.bz2 tar -xjvf R-devel.tar.bz2 cd ~/R_HOME/R-devel mkdir R-build cd R-build LDFLAGS=-m64 FFLAGS="-m64 -mpowerpc64" FCFLAGS="-m64 -mpowerpc64" CFLAGS="-m64 -mpowerpc64" ../configure --prefix='/N/hd03/mkimpel/BigRed/R_HOME/R-devel/R-build' --x-libraries=/usr/X11R6/lib64 make make install Mark W. Kimpel MD ** Neuroinformatics ** Dept. of Psychiatry Indiana University School of Medicine 15032 Hunter Court, Westfield, IN 46074 (317) 490-5129 Work, & Mobile & VoiceMail (317) 204-4202 Home (no voice mail please) mwkimpel<at>gmail<dot>com ****************************************************************** Mark Komarinski wrote:> I've for a RHEL 4 box on a P570 system. My end user wants to have a > 64-bit version of R compiled due to the large amount of memory they > require (this image has 16GB allocated to it). > > I can compile R fine in 32-bit mode, but it can't use more than 2.4GB of > RAM before it falls over and dies. > > Compiling in 64-bit mode for POWER systems "should" be as easy as adding > a CFLAGS="-m64" FFLAGS="-m64" ./configure --without-x . > > It's not, and unfortunately I'm at a loss to what the problem is. > Here's the last few lines of the above configure command: > > checking for Fortran 77 libraries of g77... -L/usr/local/lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../../../lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../.. -L/lib/../lib64 > -L/usr/lib/../lib64 -lfrtbegin -lg2c -lm -lgcc_s_64 > checking how to get verbose linking output from gcc -std=gnu99... -v > checking for C libraries of gcc -std=gnu99... -L/usr/local/lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../../../lib64 > -L/usr/lib/gcc/ppc64-redhat-linux/3.4.6/../../.. -L/lib/../lib64 > -L/usr/lib/../lib64 -lgcc_s_64 > checking for dummy main to link with Fortran 77 libraries... none > checking for Fortran 77 name-mangling scheme... lower case, underscore, > extra underscore > checking whether g77 appends underscores to external names... yes > checking whether g77 appends extra underscores to external names... yes > checking whether mixed C/Fortran code can be run... configure: WARNING: > cannot run mixed C/Fortran code > configure: error: Maybe check LDFLAGS for paths to Fortran libraries? > > Here's what looks to be the relevant part from config.log: > configure:32383: checking whether mixed C/Fortran code can be run > /usr/bin/ld: skipping incompatible > /usr/lib/gcc/ppc64-redhat-linux/3.4.6/libgcc_s_64.so when searching for > -lgcc_s_64 > /usr/bin/ld: skipping incompatible > /usr/lib/gcc/ppc64-redhat-linux/3.4.6/libgcc_s_64.so when searching for > -lgcc_s_64 > /usr/bin/ld: cannot find -lgcc_s_64 > collect2: ld returned 1 exit status > configure:32447: WARNING: cannot run mixed C/Fortran code > configure:32449: error: Maybe check LDFLAGS for paths to Fortran libraries? > > This implies that configure is compiling the code in 32 bit mode (which > is why it's skipping libgcc_s_64.o > > I guess my questions are: has anyone compiled this for this system? And > if so, how did you do it? > > -Mark >
Cookies all around for the rapid and accurate help! I wound up using a variation of the below (the non-quoted part is what I changed): On 12/19/2007 04:15 PM, Andrew Ferris wrote:> Hello Mark, > > Here's the full configure that I used to get 2.4.1 to work on 64bit SLES on a 570: > > ./configure CC="gcc -m64" / > CXX="gxx -m64" /CXX="g++ -m64"> F77="gfortran -m64" / > FC="gfortran -m64" / > CFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2" / > FFLAGS="-mminimal-toc -fno-optimize-sibling-calls -g -O2" / > LDFLAGS=-L/usr/lib64 / > --without-xThis did indeed create a 64-bit executable. Alas, I won the battle but may still lose the war. Red Hat did not include many PPC64 versions of their development libraries (libxml2-devel for example) that I need to install things like AnnBuilder. It looks like RHEL 5 has these available, so I'll need to upgrade this partition and see if I can get this working. Again, thanks for the help! -Mark -- Mark Komarinski mark_komarinski at hms.harvard.edu Sr. Research Systems Architect http://ritg.med.harvard.edu Research IT Group Harvard Medical School
I stumbled upon a minor problem when creating a customized installer using make myR IMAGEDIR=xxxxx in src/gnuwin32/installer In IMAGEDIR i have a complete installation with many additional directories with packages in the directory site-library. Since the libraries are not in library, help.start, when run, creates a file "fixedHTMLLinks" in each of the package directories. These files are included in the installer created with make. Since the version installed from this installer may live in a different directories, the fixedHTMLLinks point to incorrect places after such an install. So it might make sense that make myR IMAGEDIR=xxxxx does not include all these fixedHTMLLinks in the installer. Erich Neuwirth