Portál AbcLinuxu, 8. listopadu 2025 11:39
mkbundle umí k aplikaci přibalit vybrané assembly nebo celé běhové prostředí Mono. Podrobnosti viz Running Mono Applications.
Žádná kompilace do C se neprovádí. Existuje však projekt CrossNet, který překládá IL kód do C++. Jako GC tam funguje klasický mark & sweep.
Leda že by výsledný kód volal nějaká systémová volání v tomto smyslu ale to se mi nezdá.Nerozumím, co tím myslíte. GC musí hlavně vědět, co jsou ukazatele, aby neuklízel objekty, které jsou přístupné.
[libor@fedora-notebook Debug]$ mkbundle ./pracovni_kalendar_aplikace.exe OS is: Linux Sources: 1 Auto-dependencies: False embedding: /home/libor/Projects/pracovni_kalendar/pracovni_kalendar_aplikace/bin/Debug/pracovni_kalendar_aplikace.exe Compiling: as -o temp.o temp.s cc -ggdb -o a.out -Wall temp.c `pkg-config --cflags --libs mono-2` temp.o Donevoláním jsem měl na mysli zda není v systému popř. přímo v jádře nějaká rutina podobná GC kterou by výsledný program pokud by byl v c volal.
mkbundle vytvoří dva soubory temp.s a temp.c, ty pak přeloží a slinkuje. Soubor temp.s obsahuje assembly – jejich data (pokud jste mkbundle volal s volbou -z, data každé assembly se napřed zkomprimují a teprve poté uloží do souboru temp.s).
Soubor temp.c obsahuje funkci main, informace o jednotlivých assembly a externí pole s daty jednotlivých assembly. main se postará o inicializaci běhového prostředí a načte assembly. Data jednotlivých assembly se nedávají přímo do souboru temp.c, protože některé verze GCC mají problémy s velkými poli. Soubory temp.c i temp.s si můžete prohlédnout, když mkbundle spustíte s volbou --keeptemp.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.