Ubuntu

libstdc++6-4.5-dev does not contain 64-bit headers in the i386 package

Reported by Michael Wild on 2011-06-06
16
This bug affects 2 people
Affects Status Importance Assigned to Milestone
gcc-4.4 (Ubuntu)
Undecided
Unassigned
Maverick
Undecided
Unassigned
Natty
Undecided
Unassigned
gcc-4.5 (Ubuntu)
Undecided
Unassigned
Maverick
Undecided
Unassigned
Natty
Undecided
Unassigned
gcc-4.6 (Ubuntu)
Undecided
Unassigned
Maverick
Undecided
Unassigned
Natty
Undecided
Unassigned

Bug Description

Binary package hint: libstdc++6-4.{5,6}-dev

The package i386 architecture of the package libstdc++6-4.{5,6}-dev does not contain the 64-bit headers. This makes it impossible to compile for amd64 on a i386 installation. Also, this makes g++-4.{5,6}-multilib unusable.

Michael Wild (themiwi) on 2011-06-06
description: updated
Michael Wild (themiwi) on 2011-06-06
description: updated
Matthias Klose (doko) wrote :

what is missing? the headers are in libstdc++6-4.5-dev

Changed in gcc-4.5 (Ubuntu):
status: New → Incomplete
Changed in gcc-4.6 (Ubuntu):
status: New → Incomplete
Michael Wild (themiwi) wrote :

No, they are not. All headers in /usr/include/c++/4.{5,6}/i{4,6}86-linux-gnu/64 are missing in the libstdc++6-4.{5,6}-dev_*_i386.deb packages. Try the following on a i386 install (or a i386-chroot):

$ echo "#include <fstream>" | g++ -m64 -xc++ -E -

You will see that g++ is not able to find the header bits/c++config.h. The same command (obviously with -m32 instead of -m64) works fine on a amd64 installation, because /usr/include/c++/4.{5,6}/x86_64-linux-gnu/32 is present.

Michael Wild (themiwi) wrote :

You can also use "apt-file search 64/bits/c++config.h" in a i386 installation. You will see that nothing shows up. "apt-file search 32/bits/c++config.h" on a amd64 installation will turn up the libstdc++6-4.{5,6}-dev packages. Also, looking at http://packages.ubuntu.com/oneiric/i386/libstdc++6-4.6-dev/filelist only shows the 32-bit versions of bits/c++config.h.

Matthias Klose (doko) wrote :

confirmed, i386, not amd64

Changed in gcc-4.5 (Ubuntu):
status: Incomplete → Confirmed
Changed in gcc-4.6 (Ubuntu):
status: Incomplete → Confirmed
Changed in gcc-4.4 (Ubuntu):
status: New → Confirmed
Micah Gersten (micahg) wrote :

isn't this expected behaviour with multiarch? shouldn't one be able to install the amd64 -dev package to cross compile?

Matthias Klose (doko) wrote :

as a quick workaround:

  mv /usr/include/c++/4.x/i486-linux-gnu /usr/include/c++/4.x/i686-linux-gnu/64

Michael Wild (themiwi) wrote :

You mean that it's just a "typo" and the headers got installed into the wrong place?

On 06/06/2011 10:16 PM, Michael Wild wrote:
> You mean that it's just a "typo" and the headers got installed into the
> wrong place?

yes.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gcc-4.6 - 4.6.0-11ubuntu2

---------------
gcc-4.6 (4.6.0-11ubuntu2) oneiric; urgency=low

  * Update to SVN 20110606 (r174700) from the gcc-4_6-branch.
    - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702,
      PR tree-optimization/49243, PR c++/49134.
  * Fix c++ biarch header installation on i386. LP: #793411.

gcc-4.6 (4.6.0-11) unstable; urgency=low

  * Update to SVN 20110604 (r174637) from the gcc-4_6-branch.
    - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263,
      PR target/43700, PR target/43995, PR tree-optimization/49217,
      PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657,
      PR c++/49176, PR fortran/48955, PR tree-optimization/49038,
      PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953,
      PR c++/49276, PR fortran/49265, PR fortran/45786.
  * Configure the hppa64 and spu cross builds with --enable-plugin.
 -- Matthias Klose <email address hidden> Mon, 06 Jun 2011 21:55:42 +0200

Changed in gcc-4.6 (Ubuntu):
status: Confirmed → Fix Released
Michael Wild (themiwi) wrote :

Indeed, http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/oneiric/gcc-4.6/oneiric/revision/19#debian/rules2 would explain it ;-) Will this fix also go into Natty's gcc-4.5?

Michael Wild (themiwi) wrote :

Not to forget, Maverick? AFAIK Lucid is fine.

Funny, that nobody stumbled across this during the development of Maverick...

Matthias Klose (doko) wrote :

fixed in oneiric

Changed in gcc-4.6 (Ubuntu Natty):
status: New → Invalid
Changed in gcc-4.6 (Ubuntu Maverick):
status: New → Invalid
Changed in gcc-4.4 (Ubuntu Maverick):
status: New → Confirmed
Changed in gcc-4.4 (Ubuntu):
status: Confirmed → Fix Released
Changed in gcc-4.4 (Ubuntu Natty):
status: New → Confirmed
Changed in gcc-4.5 (Ubuntu):
status: Confirmed → Fix Released
Changed in gcc-4.5 (Ubuntu Maverick):
status: New → Confirmed
Changed in gcc-4.5 (Ubuntu Natty):
status: New → Confirmed
Changed in gcc-4.4 (Ubuntu Maverick):
milestone: none → maverick-updates
Changed in gcc-4.4 (Ubuntu Natty):
milestone: none → natty-updates
Changed in gcc-4.5 (Ubuntu Maverick):
milestone: none → maverick-updates
Changed in gcc-4.5 (Ubuntu Natty):
milestone: none → natty-updates
Matthias Klose (doko) wrote :

updated packages are available in the ubuntu-toolchain-r PPA

Paisa Seeluangsawat (paisa) wrote :

> Funny, that nobody stumbled across this during the development of Maverick...

http://stackoverflow.com/questions/4643197/missing-include-bits-cconfig-h-when-cross-compiling-64-bit-program-on-32-bit

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers