Re: [Rd] build 32-bit R on x86_64?

From: Simon Urbanek <simon.urbanek_at_r-project.org>
Date: Tue, 09 Aug 2011 21:24:40 -0400

On Aug 9, 2011, at 8:12 PM, Dirk Eddelbuettel wrote:

>
> Hi Vinh,
>
> On 9 August 2011 at 16:40, Vinh Nguyen wrote:
> | Dear R-Devel,
> |
> | I'm using Ubuntu on an x86_64 machine and would like to have both the
> | 32-bit and 64-bit versions of R built from source. By default,
> | following the usual build procedures yields 64 bit R. Looking at
> | [these](http://cran.r-project.org/doc/manuals/R-admin.html#Sub_002darchitectures),
> | I thought I could build 32-bit R by executing
> |
> | r_arch=32 ./configure
> |
> | and building R like usual (make). However, after seeing this error message,
> |
> | /usr/bin/install: cannot create regular file
> | `../../include/32/Rconfig.h': No such file or directory
> |
> | I realize I am misunderstanding the instructions. Could someone
> | please clarify how I could go about compiling both 32-bit and 64-bit
> | versions of R on my Linux machine? Thank you!
>
> I do not think that multiarch build (ie 32 and 64 at the same time) are fully supported yet on Ubuntu or Debian. It is coming, but just like a number of other things, not exactly overnight. It is a release goal.
>

It actually works ;) I'm using it for testing on my RForge.net machine and yes, it's Debian - everything just works there :).

But back to the original question. First a minor detail, don't set environment variables use configure variables instead. Second, don't build in the source directory, always create an object directory. Third, r_arch is simply a name you set for the architecture, it has no meaning other than that it's a label.

So now to the real stuff. If you want 32-bit build, you'll need 32-bit runtime of everything important in your system and the multilib compilers. In Debian (and thus likely in Ubuntu too) that can be achieved by something like

sudo apt-get install ia32-libs-dev lib32readline6-dev lib32ncurses5-dev lib32icu-dev gcc-multilib gfortran-multilib

Then you can build both 64-bit and 32-bit R, the difference will be in the all compiler flags -- for 64-bit you'll use -m64 (or nothing since it's the default) and for 32-bit you'll use -m32.

So roughly something like

tar fxz R-2.13.1.tar.gz
mkdir obj-32
cd obj-32
../R-2.13.1/configure r_arch=i386 CC='gcc -std=gnu99 -m32' CXX='g++ -m32' FC='gfortran -m32' F77='gfortran -m32' make -j24 && sudo make install rhome=/usr/local/R/2.13 cd ..
mkdir obj-64
cd obj-64
../R-2.13.1/configure r_arch=amd64
make -j24 && sudo make install rhome=/usr/local/R/2.13

That will leave you with multi-arch R that you can run with R --arch=i386 # 32-bit
R --arch=amd64 # 64-bit
Packages will be also built as multi-libs. Good luck :) [BTW the rhome=... setting is entirely optional, I just like to keep my R versions organizedů]

Cheers,
Simon

> In the meantime, you can always use virtualization. I have a Debian 32-bit
> system and an Ubuntu 32-bit system in KVM virtualization on my Ubuntu 64-bit
> server. That works well. Kvm, or Xen, or Virtualbox, or Vmware, ... all
> offer fairly decent virtualization.
>
> Debian/Ubuntu specific questions are even more welcome on r-sig-debian.
>
> Dirk
>
> --
> Two new Rcpp classes scheduled for New York and San Francisco, details at
> http://dirk.eddelbuettel.com/blog/2011/08/04#rcpp_classes_2011-09_and_2011-10
>
> ______________________________________________
> 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 Wed 10 Aug 2011 - 01:30:56 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 11 Aug 2011 - 07:10:17 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