gcc-arm-none-eabi, picolib und stdint.h?

OP #8100887
Lesenswert?
• ▲
▼

Hallo Insider,

Debian hat für forky die newlib(-nano) durch die picolib ersetzt. Eine neue gcc-Version gibt es natürlich auch. Seitdem ist die stdint.h nicht mehr im gcc-Paket, obwohl z.B. stdarg.h noch dabei ist - irgendwie unlogisch. Man braucht also die picolib nur für stdint.h.

Ist das ein Versehen oder C23 oder?

Bisher bin ich sehr gut ohne newlib ausgekommen. So eine Abhängigkeit würde ich mir auch in Zukunft gerne sparen.

: Bearbeitet durch User
OP #8101548
Lesenswert?
• ▲
▼

Du hast Recht, wenn man das Kleingedruckte zu diesem Unterforum ernst nimmt: "Programmierung abseits des Embedded-Bereichs". Aber "Compiler und IDE" gibt's nicht mehr :(

Mit -ffreestanding braucht man keine C-Standardlibrary. Das finde ich für kleine uC-Programme durchaus passend. Aber stdint.h sollte trotzdem dabei sein, gerade, weil in C23 noch mehr dazu gekommen ist. ISO/IEC 9899:2024 (en) — N3220 working draft sagt:

1
A conforming freestanding implementation shall accept any
2
strictly conforming program in which the use of the features
3
specified in the library clause (Clause 7) is confined to the
4
contents of the standard headers <float.h>, <iso646.h>,
5
<limits.h>, <stdalign.h>, <stdarg.h>, <stdbit.h>, <stdbool.h>,
6
<stddef.h>, <stdint.h>, and <stdnoreturn.h>.
7

8
Additionally, a conforming freestanding implementation shall
9
accept any strictly conforming program where:
10
 - the features specified in the header <string.h> are used,
11
except the following functions: strcoll, strdup, strerror,
12
strndup, strtok, strxfrm; and/or,
13
 - the selected function memalignment from <stdlib.h> is used.
OP #8101604
Lesenswert?
• ▲
▼

Oliver S. schrieb:

freestanding als Gegensatz zu hosted braucht kein Betriebssystem, aber sehr wohl eine (minimale) cstandardlib.

Ja, mindestens mit float.h über stdint.h bis stdnoreturn.h; natürlich mit den zugehörigen Funktionen. Das war alles beim gcc dabei. Manches wie z.B. stdarg braucht ja auch spezielle Unterstützung vom Compiler. Und jetzt fehlt in /usr/lib/gcc/arm-none-eabi/15/include/ genau eine Datei:

1
$ diff -u /tmp/1*
2
--- /tmp/14.2.1 2026-10-06 13:45:52.338549748 +0200
3
+++ /tmp/15     2026-10-06 13:46:06.714909237 +0200
4
@@ -18,7 +18,6 @@
5
 stdckdint.h
6
 stddef.h
7
 stdfix.h
8
-stdint.h
9
 stdnoreturn.h
10
 syslimits.h
11
 tgmath.h
#8101618
Lesenswert?
• ▲
▼

Bauform B. schrieb:

Das war alles beim gcc dabei.

Das sind Standardlibrary-Header. gcc als reiner Compiler hat gar keine. Warum die Debian-Maintainer die Pakete jetzt umsortiert haben, musst du die selber fragen.

Da stdint.h aber auch nur ein reiner Header ohne Binärcode dahinter ist, kopier den halt einfach ins passende Verzeichnis.

Oliver

: Bearbeitet durch User
OP #8101665
Lesenswert?
• ▲
▼

Oliver S. schrieb:

Wenn’s denn bug ist.

Eben.

Die picolib ist ja nur optional,

genau deswegen wollte ich sie weglassen. Aber die ist recommended, also schöner ist's schon, wenn ich sie installiere. Und es gibt "LDFLAGS += -nostdlib". Damit sollte die picolib beim Linken ignoriert werden. Das wäre optimal, gibt aber sehr spannende neue Fehler. Irgendwo ist noch ein neuer Schalter versteckt.

das gcc-Paket braucht ja ansonsten die normale libc6. Dafür wirds dann auch eine stdint.h geben.

Die sind verschieden, alleine wegen 64-Bit vs 32-Bit und gcc 16 vs gcc 15.

Antwort schreiben

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.