Re: how to compile in one system targeting another?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2017-10-21 12:41 +0100, Toebs Douglass wrote:
> On 21/10/17 04:07, sugar wrote:
> > Hi, how could for instance, compile a source in my server, but the actual
> > target will be another server, should I enable certain special flags at the
> > time of the compilation?
> 
> I may be wrong, but as I understand it, GCC has the notion of a host, a 
> target and a build.
> 
> The host is the platform (OS, processor, etc) which runs GCC.
> 
> The target is the platform GCC emits code for.
> 
> The build is the platform which is actually building this GCC.

For example, if you have a ARM laptop, and a x86_64 workstation, and you
want to develop programs for AVR MCUs on your ARM laptop, you could invoke

    gccsrcdir/configure --host=x86_64-linux-gnu \
      --target=arm-linux-gnueabihf --build=x86_64-linux-gnu

on your workstation.  You'll build arm-linux-gnueabihf-gcc running on
x86_64-linux-gnu.  Then invoke

    gccsrcdir/configure --host=arm-linux-gnueabihf --target=avr \
      --build=x86_64-linux-gnu

on your workstation.  Then you can build avr-gcc running on
arm-linux-gnueabihf.

To use --host=X-Y-Z, you must have X-Y-Z-gcc.  And to build X-Y-Z-gcc
you need X-Y-Z-binutils.  To build "useful" programs such as a simple
hello world program, you need to build libc for X-Y-Z with X-Y-Z-gcc.

> Building GCC IME, although I'm barely competent in Linux, was for me an 
> extraordinarily difficult, painful, error and mistake prone and time 
> consuming process.  I would even call it agonizing.  I'm afraid that 
> given the questions you're asking, you may not realise how staggeringly 
> difficult the task you are attempting is.

Yes.  To bootstrap X-Y-Z-binutils, X-Y-Z-gcc and libc for X-Y-Z, you
have to use some strange configuration flags.  Cross LFS
<http://clfs.org> would be an useful reference if you want to do that.
-- 
Xi Ruoyao <ryxi@xxxxxxxxxxxxxxxxx>
School of Aerospace Science and Technology, Xidian University

Attachment: smime.p7s
Description: S/MIME cryptographic signature


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux