ΠΠΈΠΉΡ ΠΠ°ΠΊΠΊΠ°ΡΠ΄ (Keith Packard), Π°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° Debian, ΡΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π» Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° X.Org ΠΈ ΡΡΠ·Π΄Π°ΡΠ΅Π» Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ X-ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ XRender, XComposite ΠΈ XRandR, ΠΏΡΡΠΊΠ°Π½Π΅ Π½Π° Π½ΠΎΠ²Π°ΡΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π° C-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° , ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π° Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΠ°ΠΌΠ΅Ρ. ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π΅ Π·Π°ΠΈΠΌΡΡΠ²Π°Π½ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Cygwin ΠΈ , ΡΠ°Π·Π²ΠΈΠ²Π°Π»Π° ΡΠ΅ Π·Π° ΠΌΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈ Atmel AVR. ΠΠΎΠ΄ΡΡ Π½Π° PicoLibc Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ BSD. ΠΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠ΅ ΡΠ±ΠΎΡΠΊΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ ARM (32-Π±ΠΈΡ), i386, RISC-V, x86_64 ΠΈ PowerPC.
ΠΠΈΡ ΠΠ°ΠΊΠΊΠ°ΡΠ΄ Π·Π°ΠΏΠΎΡΠ½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΡΠ»Π΅Π΄ ΠΊΠ°ΡΠΎ Π½Π΅ ΡΡΠΏΡ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° Libc Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Ρ ΠΌΠ°Π»ΠΊΠΎ RAM. ΠΡΠΎΠ΅ΠΊΡΡΡ Π½Π°ΠΏΡΠ΅Π΄Π²Π° ΠΎΡ ΠΌΠΈΠ½Π°Π»Π°ΡΠ° Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π±Π΅ΡΠ΅ Π²Π΅ΡΡΠΈΡ Π½Π° newlib, Π² ΠΊΠΎΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π½Π° stdio Π±ΡΡ Π° Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π° Π²Π΅ΡΡΠΈΡ ΠΎΡ avrlibc (stdio Π² newlib Π½Π΅ Π±Π΅ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΏΠΎΡΠ°Π΄ΠΈ Π³ΠΎΠ»ΡΠΌΠΎΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΡΡΡΡΠΈ). Π’ΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΠΈΡΠ° Π΅ ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΠΏΠΎΡΡΠΎΡΠ½Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° RISC-V ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π½Π°ΡΠΊΠΎΡΠΎ ΡΠΎΠΉ ΠΏΡΠ΅ΡΠ°Π·Π³Π»Π΅Π΄Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ Π½Π° libc ΠΈ ΡΡΠΈΠ³Π½Π° Π΄ΠΎ Π·Π°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠΎ, ΡΠ΅ Ρ ΠΌΠ°Π»ΠΊΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡΡΠ° ΠΎΡ newlib ΠΈ avrlibc ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π΄ΠΎΠ±ΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠ΅ ΠΏΠΎΠ΄ ΠΈΠΌΠ΅ΡΠΎ "newlib-nano", Π½ΠΎ Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΎΠ±ΡΡΠΊΠ²Π°Π½Π΅ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Newlib, ΡΠΎΠΉ Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ Π½Π° PicoLibc.
Π ΡΠ΅ΠΊΡΡΠΈΡ ΡΠΈ Π²ΠΈΠ΄ Picolibc Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠ΅ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π»ΠΈΡ ΠΊΠΎΠ΄, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ Π½Π΅ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ BSD (ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π½Π΅ Π±Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π·Π° Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°), ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΠΏΡΠΎΡΡΠΈ ΡΠΈΡΡΠ°ΡΠΈΡΡΠ° Ρ Π»ΠΈΡΠ΅Π½Π·Π° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ Π±Π΅ΡΠ΅ ΠΏΡΠ΅Ρ Π²ΡΡΠ»Π΅Π½Π° ΠΎΡ βstruct _reentβ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° TLS (). ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΈΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° stdio, Π·Π°ΠΈΠΌΡΡΠ²Π°Π½ ΠΎΡ ΠΊΠΎΠ΄Π° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° avrlibc (ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ Π·Π° ATmel Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΈ Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡ Π±ΡΡ Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° C). ΠΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΡΡ Meson, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π½Π΅ ΡΠ΅ ΠΏΡΠΈΠ²ΡΡΠ·Π²Π°Ρ ΠΊΡΠΌ ΡΡΠ΅Π½Π°ΡΠΈΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° newlib ΠΈ ΠΎΠΏΡΠΎΡΡΠΈ ΠΏΡΠ΅Π½ΠΎΡΡΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ newlib. ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΎΠΏΡΠΎΡΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° ΠΊΠΎΠ΄Π° Π·Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ (crt0), ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ΅Π½ ΠΊΡΠΌ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌΠΈΡ ΡΠ°ΠΉΠ» ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° main().
Π Π²Π΅ΡΡΠΈΡ Picolibc 1.1:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠΌΠΎΡΠ½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π΅ Π½Π° ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° "", ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° ΠΊΠΎΠ΄Π°, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½ Π² ΡΡΠ΅Π΄Π° Π½Π° ΠΎΡΠ»Π°Π΄ΡΠΈΠΊ ΠΈΠ»ΠΈ Π΅ΠΌΡΠ»Π°ΡΠΎΡ, Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ Π½Π° Ρ ΠΎΡΡ-ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°;
- ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ open, close, read ΠΈ write, Π² tinystdio ΡΠ° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Π½ΠΈ POSIX-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° Π²Ρ ΠΎΠ΄/ΠΈΠ·Ρ ΠΎΠ΄ Π½Π° stdio, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ fopen ΠΈ fdopen, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° stdin/stdout/stderr Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ Π² POSIX ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ;
- ΠΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½ΠΈ ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΡ ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π° Π½Π° newlib. ΠΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠΈ libm Π·Π° , ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ Π±Π΅Π· ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ;
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Β«Hello worldΒ» Ρ picolibc Π·Π° ΡΠΈΡΡΠ΅ΠΌΠΈ ARM ΠΈ RISC-V;
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΈ ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈΡΠ΅ newlib, libm ΠΈ mathfp, ΠΊΠΎΠΈΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΠΊΠΎΠ΄.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
