Re: cross-build-essential

"P. J. McDermott" <[email protected]>
Newsgroups gmane.linux.debian.devel.embedded
Message-ID <[email protected]>
On 2012-06-28 05:17, Goswin von Brederlow wrote:
> Wookey <[email protected]> writes:
>> 1) Some of the packages that cross-build-essential depends on
>> (cross-compiler
>> packages) are not yet in the archive, and won't be in wheezy. That
>> means that these packages will not be installable and thus will not
>> migrate from unstable until the cross-compiler packages do arrive.
>>
>> That seems like a very good reason to keep cross-build-essential as a
>> separate source package for now, available from emdebian.org, along
>> with the toolchains. Anyone disagree?
>
> I wonder what the difference is between cross-build-essential and
> build-essential in terms of packages and wether we need a seperate
> package at all.
>
> Say I want to have the build-essential for i386 installed on amd64.
> I could install build-essential:i386, replacing gcc/g++:amd64 with
> gcc/g++:i386. Wouldn't that give me everything needed to cross-compile
> for i386?

In that case, yes, because you can run x86 code on an AMD64 or Intel 64
CPU.  Though you would indeed be replacing gcc-4.7:amd64 etc. with
gcc-4.7:i386 etc. as the packages aren't co-installable with themselves.

But you can't install gcc-4.7:armhf (for example) on an AMD64 or Intel
64 system and expect to be able to compile anything.  That's why we have
cross compiler packages [1], e.g. gcc-4.7-arm-linux-gnueabihf:amd64.

> That said wouldn't it make sense to have build-essential use
>
>   Depends: g++:<arch> (>= <ver>) | g++-cross-<arch> (>= <ver>)
>
> Since build-essential is architecture any it already pulls in the
> foreign libraries needed for that arch. Only difference would be that
> since g++:<foreign> conflicts with the g++:<native> frontends would
> choose g++-cross-<arch> instead.

The idea is that a user (or sbuild >= 0.63.0) can install
crossbuild-essential-<target> and have cross compilers etc. for a target
architecture pulled in automatically.  Installing the build-essential
binary package doesn't do this, nor should it.

To this end, the crossbuild-essential-<target> packages [2][3] depend on
(among other things like dpkg-cross and pkg-config-<triplet>)
gcc-4.7-<triplet> | c-compiler-<triplet> and g++-4.7-<triplet> |
c++-compiler-<triplet>.  (Note that the "-4.7" is temporary and should
be removed once cross compiler metapackages exist [4].)

[1]: http://emdebian.org/~thibg/repo/pool/main/g/gcc-4.7/
[2]: http://bootstrap.pehjota.net/build-essential/
[3]: http://bootstrap.pehjota.net/archive/pool/main/c/cross-build-essential/
[4]:
http://lists.mister-muffin.de/pipermail/debian-bootstrap/2012-July/000248.html

-- 
P. J. McDermott                                        (_/@\_)    ,--.
http://www.pehjota.net/                           o    < o o >   / oo \
http://www.pehjota.net/contact.html                 o   \ `-/    | <> |.
                                                o o o    "~v    /_\--/_/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.