Files
kolibrios/programs/develop/ktcc/bin/doc/ru/How to use.txt
T
ace-dentandBurer a4f3f3545a develop/ktcc: Post-SVN tidy (#425)
- Move source code from `trunk` into root directory.
- Update build files and ASM include paths. Add SPDX license header where appropriate.
- These changes also update the CI build files in `.gitea/workflows/`.
- Note: Line endings standardised from `CRLF` > `LF`, so best to view diffs with whitespace changes hidden.

(Work towards [#75](KolibriOS/kolibrios#75), point 3)

---------

Co-authored-by: Burer <burer@kolibrios.org>
Reviewed-on: KolibriOS/kolibrios#425
Reviewed-by: Mikhail Frolov <mixa.frolov2003@gmail.com>
Reviewed-by: Burer <burer@kolibrios.org>
Co-authored-by: Andrew <dent.ace@gmail.com>
Co-committed-by: Andrew <dent.ace@gmail.com>
2026-04-19 16:41:37 +00:00

109 lines
4.7 KiB
Plaintext

┴√ёЄЁ√щ ёЄрЁЄ
tcc шёяюы№чєхЄё  ъръ юс√ўэю (ёь. ёяЁртъє tcc). ╨рё°шЁхэшх KX шёяюы№чюы№чєхЄ
Їрщы√ юяЁхфхыхэшщ ёшьтюыют (*.def) фы  фшэрьшўхёъшї сшсышюЄхъ (Їрщы√ *.o,
эх ЄЁхсє■Єё , шёъы■ўхэшх - ёЄрЄшўхёъшх *.o, хёыш юэш эєцэ√ фы  ЁрсюЄ√
яЁюуЁрьь√).
╧ЁшьхЁ√ яю ёсюЁъх ёь. т фшЁхъЄюЁшш /samples
╧Ёшьхўрэшх:
ъы■ў -nobss с√ы єфрыхэ, Єръ ъръ юэ эх шьххЄ ёь√ёыр (Ёрэхх ухэхЁшЁютрт°р ё 
bss ёхъЎш  чряюыэ ырё№ эєы ьш ш чрэшьрыр эхэєцэюх ьхёЄю т Їрщых, ¤Єр ёхъЎш 
эх фюыцэр ёюфхЁцрЄ№ё  т юсЁрчх ш  фЁю шэшЎшрышчшЁєхЄ ¤Єє ўрёЄ№ э ы ьш
ртЄюьрЄшўхёъш яЁш чруЁєчъх)
┬ фшЁхъЄюЁшш /lib яюёЄрты ■Єё  Їрщы√ *.def (юяЁхфхыхэшх ёшьтюыют фшэрьшўхёъшї
сшсышюЄхъ), crt0.o (яюффхЁцър ъюфр ╤) ш *libtcc.a (тёяюьюурЄхы№эр  сшсышюЄхър
tcc), р Єръцх эхъюЄюЁ√х ёЄрЄшўхёъшх сшсышюЄхъш *.a. ╩Ёюьх Єюую, шьххЄё 
сшсышюЄхър tiny.o фы  тючьюцэюёЄш ышэъютъш яЁшыюцхэшщ схч яюффхЁцъш ъюфр ╤,
т Єюь ўшёых юс·хъЄэ√ї Їрщыют ёючфрээ√х ёЄюЁюээшьш ъюьяшы ЄюЁрьш.
┬ю шчсхцрэшх ъюэЇышъЄют сшсшышюЄхъ ё шёяюы№чютрэшхь тючьюцэюёЄхщ
яЁхфюёЄрты хь√ї Ёрё°шЁхэшхь KX ЁхъюьхэфєхЄё  шёяюы№чютрЄ№ Єюы№ъю юфэє
фшЁхъЄюЁш■ ё сшсышюЄхърьш [++, т ъюЄюЁющ эх фюыцэю с√Є№ тчршьюшёъы■ўр■∙шї
сшсышюЄхъ]. ┼ёыш юяЁхфхыхэю эхёъюы№ъю фшЁхъЄюЁшщ сшсышюЄхъ,
т ърцфющ шч эшї эх фюыцэю с√Є№ ъюэЇышъЄэ√ї сшсышюЄхъ. ═ряЁшьхЁ,
яЁш Єръюь яюфъы■ўхэшш сшсышюЄхъш
-llibc
tcc ш∙хЄ Їрщы√ т ёыхфє■∙хь яюЁ фъх: libc.def, liblibc.def, liblibc.a
╬сЁрЄшЄх тэшьрэшх, ўЄю тёх ЄЁш трЁшрэЄр сєфєЄ яЁртшы№э√ьш ш сєфхЄ шёяюы№чютрэ
яхЁтр  эрщфхээр  сшсшышюЄхър. ╥ръцх юсЁрЄшЄх тэшьрэшх, ўЄю фы  ъюЁЁхъЄэющ
ЁрсюЄ√ яЁшыюцхэш  ё Ёрё°шЁхэшхь KX тёх фшэрьшўхёъшх сшсышюЄхъш фюыцэ√ с√Є№
юсЁрсюЄрэ√ Єюы№ъю ё *.def
╘рщы√ юяЁхфхыхэш  ёшьтюыют
╨рё°шЁхэшх KX шёяюы№чєхЄ Їрщы√ юяЁхфхыхэшщ ёшьтюыют (*.def). ╘рщы√ *.def
шёяюы№чє■Є яЁюёЄющ ЇюЁьрЄ ш ьюуєЄ ёючфтрЄ№ё  ш ЁхфръЄшЁютрЄ№ё  т ы■сюь
єфюсэюь ЄхъёЄютюь ЁхфръЄюЁх. ╤ЄЁєъЄєЁр Їрщыр *.def юяшёрэр эшцх.
; ╩юььхэЄрЁшш эрўшэр■Єё  Єюўъющ ё чря Єющ ш шуэюЁшЁє■Єё  яЁш юсЁрсюЄъх
;
; ╧хЁтр  ёЄЁюър фюыцэр эрўшэрЄ№ё  ё ъы■ўхтюую ёыютр LIBRARY ё єърчрэшхь
; шьхэш сшсышюЄъш c Ёрё°шЁхэшхь (эх сюыхх 3 ёшьютюыют яюёых Єюўъш)
LIBRARY libname.obj
; ═р ёыхфє■∙хщ ёЄЁюъх ёыхфєхЄ ъы■ўхтюх ёыютю EXPORTS ш
; юяЎшюэры№э√щ ъы■ў prefix
EXPORTS [prefix]
; хёыш чрфрэ ъы■ў prefix, Єю тю тёхї ёшьтюырї фюыцхэ шёяюы№чютрЄ№ё 
; яЁхЇшъё шч шьхэш сшсышюЄхъш (схч Ёрё°шЁхэш ) ёю ёыхфє■∙шь чр эшь ёшьтюыюь
; яюфўхЁъштрэш . ╧ЁхЇшъё сєфхЄ юЄсЁю°хэ яЁш яюёЄюхэшш ЄрсышЎ√ шьяюЁЄр
; ═ряЁшьхЁ, фы  сшсышюЄхъш http.obj яЁхЇшъё фюыцхэ с√Є№ http_
; шч ёшьтюыр http_get т ЄрсышЎє шьяюЁЄр сєфхЄ чряшёрэ ёшьтюы get
[libname_]entry1
[libname_]entry2
; тёх юёЄры№э√х ёшьтюы√ сшсышюЄхъш
╟руюыютюўэ√х Їрщы√ фшэрьшўхёъшї сшсышюЄхъ
─ы  шьяюЄшЁєхь√ї ЇєэъЎшщ яюффхЁцштрхЄё  фтр ёяюёюср шї юс· тыхэш :
- ё яЁхЇшъёюь рЄЁшсєЄр шьяюЁЄр (ЁхъюьхэфєхЄё  фы  эют√ї сшсшышюЄхъ).
─рээ√щ ёяюёюс фюяюыэшЄхы№эю єьхэ№°рхЄ ЁрчьхЁ яЁшыюцхэш .
__attribute__((dllimport)) void foo(int);
- тэх°э   ЇєэъЎш  ё т√чютюь яю єърчрЄхы■ (єёЄрЁхт°шщ ёяюёюс, шёяюы№чєхЄё 
фы  ёютьхёЄшьюёЄш ё шьх■∙шьшё  эр фрээ√щ ьюьхэЄ чруюыютърьш)
extern int (*foo)(const char*);
┬═╚╠└═╚┼:
юс· тыхэшх шьяюЁЄшЁєхьющ ЇєэъЎшш ё т√чютюь яю єърчрЄхы■ схч ёяхЎшЇшърЄюЁр
extern  ты хЄё  ю°шсъющ, ъюЄюЁє■ tcc эх ьюцхЄ юЄёыхфшЄ№, Єръ ъръ фрээр 
ъюэёЄЁєъЎш   ты хЄё  яЁртшы№эющ ё Єюўъш чЁхэш   ч√ър ╤
int (*foo)(const char*); => ю°шсър!!!
╬с· тыхэшх шьяюЁЄшЁєхь√ї ЇєэъЎшщ схч __attribute__((dllimport))
эх яюффхЁцштрхЄё  ш сєфхЄ ухэхЁшЁютрЄ№ ю°шсъє ышэъхЁр
void foo(int); => ю°шсър!!!, юёЄрэют ышэъхЁр.
╧ЁютхЁър яюффхЁцъш Ёрё°шЁхэш  KX
─ы  яЁютхЁъш, ўЄю tcc яюффхЁцштрхЄ Ёрё°шЁхэшх KX:
1. т ъюьрэфэющ ёЄЁюъх эрсхЁшЄх
tcc -v
╤ЄЁюър эшцх ючэрўрхЄ, ўЄю шьххЄё  яюффхЁър Ёрё°шЁхэш  KX
tcc version 0.9.26 (i386 KolibriOS/KX extension 0.4.6)
2. ┬ ъюфх фы  єёыютэющ ъюьяшы Ўшш шёяюы№чєщЄх фшЁхъЄшт√ яЁхяЁюЎхёёюЁр
яЁютхЁъш яЁхфюяЁхфхыхээюую ьръЁюёр __KX__, эряЁшьхЁ
#ifdef __KX__
// ъюф ъюЄюЁ√щ фюыцхэ ъюьяшышЁютрЄ№ё  Єюы№ъю ё Ёрё°шЁхэшхь KX
#else
// ъюф, ъюЄюЁ√щ эх чртшёшЄ юЄ Ёрё°шЁхэш  KX
#endif
╬сЁрЄшЄх тэшьрэшх, ўЄю т эрёЄю ∙хх тёхь  ¤ЄюЄ ьръЁюё яюърч√трхЄ, ўЄю
ъюьяшы ЄюЁ яюффхЁцштрхЄ Ёрё°шЁхэшх KX. ╧ю єьюыўрэш■ ¤ЄюЄ ьръЁюё сєфхЄ
юяЁхфхыхэ тёхуфр, фрцх хёыш ┬√ яю ъръшь Єю яЁшўшэрь эх цхырхЄх
шёяюы№чютрЄ№ эют√х яЁхшьє∙хёЄтр. ╧Ёш шёяюы№чютрэшш Єхъє∙шї
юёюсхээюёЄхщ Ёрчфхы Є№ ъюф юяшёрээ√ь т яЁшьхЁх т√°х ёяюёюсюь т
сюы№°шэёЄтх ёыєўрхт эх ЄЁхсєхЄё .