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

Bug#1023692: gcc-arm-linux-gnueabihf: Compiling anything with <math.h> fails: error: '_Float128' is not supported on this target



> No, this is totally broken. No package in Debian ships anything in
> /usr/include/bits/. If you have anything there, your system is broken
> rather than Debian.

That's exactly the kind of info I was looking for. Thank you!


> The interesting question now is where those files came from.

Easy enough.

  $ dpkg -S /usr/include/bits

  libc6-dev-i386: /usr/include/bits

That's the problematic package. I don't recall why I had this installed,
but it was there on all of my boxes.

I removed it:

  $ sudo apt remove libc6-dev-i386

  ...
  The following additional packages will be installed:
    cpp-10 g++-10 gcc-10 gcc-10-base gfortran-10 lib32gcc-10-dev lib32stdc++-10-dev libgcc-10-dev libgfortran-10-dev
    libstdc++-10-dev libx32gcc-10-dev libx32stdc++-10-dev
  The following packages will be REMOVED:
    g++-10-multilib gcc-10-multilib libc6-dev-i386 libc6-dev-x32
  The following packages will be upgraded:
    cpp-10 g++-10 gcc-10 gcc-10-base gfortran-10 lib32gcc-10-dev lib32stdc++-10-dev libgcc-10-dev libgfortran-10-dev
    libstdc++-10-dev libx32gcc-10-dev libx32stdc++-10-dev

But the build still fails:

  $ arm-linux-gnueabihf-gcc-12 -c -o /tmp/tst.o /tmp/tst.c

  In file included from /tmp/tst.c:1:
  /usr/include/math.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory
     27 | #include <bits/libc-header-start.h>
        |          ^~~~~~~~~~~~~~~~~~~~~~~~~~
  compilation terminated.

Looking around, this was due to libc6-dev-armhf-cross not being
installed. I install it:

  $ sudo apt install libc6-dev-armhf-cross

  ...
  The following additional packages will be installed:
    linux-libc-dev-armhf-cross
  The following NEW packages will be installed:
    libc6-dev-armhf-cross linux-libc-dev-armhf-cross

And the test compile then works.

I then looked at the package relationships to see why
libc6-dev-armhf-cross wasn't pulled in. It looks like

  gcc-12-arm-linux-gnueabihf Recommends libc6-dev-armhf-cross

And for whatever reason this recommendation wasn't being satisfied on my
systems. I'm sure there's a reason this is Recommends and not Depends.
Would it break too much stuff to upgrade this to a Depends? This failure
was kinda fundamental.

Also, the libc6-dev-i386 was a red herring: I can reinstall that
package, and it can coexist nicely with the armhf-cross stuff without
breaking anything.

Thanks!


Reply to: