From hin-tak.leung at cimr.cam.ac.uk  Thu Nov  2 16:38:01 2006
From: hin-tak.leung at cimr.cam.ac.uk (Hin-Tak Leung)
Date: Thu, 02 Nov 2006 15:38:01 +0000
Subject: [Rd] Cross-compilation
In-Reply-To: <op.thzmt7scmfjo24@norisk>
References: <op.thziv9jjmfjo24@norisk> <200610251910.40831.rdiaz@cnio.es>
	<op.thzmt7scmfjo24@norisk>
Message-ID: <454A10D9.1020601@cimr.cam.ac.uk>

You might be better off using the same g++ as distributed and found on 
Prof Ripley's web site, rather than the newer 4.x:

$ /home/hin-tak/mingw-cross/bin/i586-mingw32-c++  --version
i586-mingw32-c++ (GCC) 3.4.5 (mingw special)
...

Name-mangling and C++ ABI had changed between gcc 3.x and 4.x, so 
compiling c++ programs might be different.

It had worked out-of-the-box for me when I was using fedora 5 x86_64
(I just upgraded to fedora 6 yesterday, and I haven't tried doing
any cross-compiling yet). So fc4 probably should work.

HTH,
Hin-Tak Leung

Tom McCallum wrote:
> Thanks for your reply, as an example it appears to have difficulty linking  
> to even ostream library of the standard C++, as shown below:
> 
> /home/tmccallum/ritzel/RItzel/src/Classifier.cpp:209: undefined reference  
> to `_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc'
> Classifier.o: In function `operator<<':
> /usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:218:  
> undefined reference to `_ZNSolsEd'
> /usr/lib/gcc/i386-redhat-linux/4.0.2/../../../../include/c++/4.0.2/ostream:196:  
> undefined reference to `_ZNSolsEl'
> 
> I am currently working R-2.4.0 as downloaded today.
> 
> I know the g++ has gone through some alterations and wondered if you knew  
> the version of g++ you cross-compiled your package with for comparison -  
> mine is g++ (GCC) 4.0.2 20051125 (Red Hat 4.0.2-8).
> 
> Many thanks
> 
> Tom
> 
> 
> On Wed, 25 Oct 2006 18:10:40 +0100, Ramon Diaz-Uriarte <rdiaz at cnio.es>  
> wrote:
> 
>> Dear Tom,
>>
>> It has worked for me out-of-the box in at least two times, one a while  
>> ago
>> with R-2.2-something and recently with R-2.4.0. In both cases, I was  
>> running
>> Debian (with a mix of testing and unstable) on x86. I never had to do
>> anything, just run the script and at least in one case I did  
>> crosscompile a
>> package with C++.
>>
>>
>> R.
>>
>> On Wednesday 25 October 2006 18:03, Tom McCallum wrote:
>>> Hi everyone,
>>>
>>> I am trying to cross-compile a package I wrote using the Yan and Rossini
>>> tutorial "Building Microsoft Windows versions of R and R packages using
>>> Intel Linux".  I have got reasonably far with this but when doing the
>>> linking using the line:
>>>
>>> i586-mingw32-g++  -shared -s  -o mylibrary.dll mylibrary.def mylibrary.o
>>> mylibrary_res.o  -L/my/path/RCrossBuild/WinR/R-2.4.0/bin -lR
>>>
>>> I get lots of these type of messages:
>>> /my/path/to/mylibrary.cpp:43: undefined reference to
>>> `_GLOBAL_OFFSET_TABLE_'
>>>
>>> and other similar linker errors for virtually every object and command  
>>> in
>>> the program.  After some googling I have found that there may be  
>>> problems
>>> with the libgcc.a library and its default -fPIC argument during
>>> compilation.
>>>
>>> Has anyone got this tutorial to work and if so how did they overcome  
>>> this?
>>>
>>> I am attempting to do this on Fedora Core 4 on a 32-bit machine, having
>>> completed all the previous sections of the tutorial for building a
>>> cross-platform version of R.
>>>
>>> Many thanks
>>>
>>> Tom
> 
> 
>




[Rd] Cross-compilation
Hin-Tak Leung