[Rd] Compiling 64bit static library for Windows (Rtools33, MSYS2, cross-compile on linux)

Duncan Murdoch
Sat, 30 May 2015 12:14:08 -0000

On 29/05/2015 4:16 PM, Sue McDonald wrote:
> My apologies for cross-posting. I found this site, after I had posted on
> stack-overflow.
>
> I need to compile several static libraries (C & Fortran) which will
later
> be linked with an R package. Rtools33 directory includes /i686-w64-mingw32
> directory which I understand creates 32 bit binaries. Yet, there are other
> 64 bit directories as well.

The current Rtools is set up for multilib operation.  You only need to
use the binaries in Rtools/gcc-4.6.3/bin.  The executables there will
choose files from the other directories depending on the -m32 or -m64
flag, for 32 bit or 64 bit operation.

>
> I have three related questions:
>
>    1.
>
>    Can Rtools33 be used to compile static libraries as a separate step
>    using -m64 flag?

Yes, I believe so.  They would be 64 bit static libraries.

>    2.
>
>    MSYS2 is very convenient for compiling many of these libraries. Can a
>    static library compiled with x86_64-w64-mingw32 (gcc 4.9.2) be used with
>    Rtools33 (v 4.6.2)?

Rtools uses 4.6.3, not 4.6.2.  I would assume the runtime libraries are
different between 4.6.3 and 4.9.2, so you won't be able to mix versions
like that.

However, you should be able to use your MSYS2 system for all
compilation, if you create a MkRules.local file with the right settings.
 You will need to compile R and all packages and libraries using that
system, don't expect to be able to mix binaries from different versions
of gcc.


>    3.
>
>    Can a static library compiled using x86_64-w64-mingw32-gcc
>    cross-compiler (v 4.6.2) on linux be used with Rtools33?

Some libraries used by packages are compiled by Brian Ripley using a
cross-compiler on linux.  I'd assume he's using 4.6.3 as with the Rtools
build, but I'm not sure about that.

Duncan Murdoch

>
> Options 2 and 3 are preferable for convenience and speed.
>
> Compiling all libraries as part of the R-package is not currently an
option.
>
> Thanks,
>
> SM
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>