Szerző |
Üzenet |
dekanyz
Tag
|
# Elküldve: 2013. Feb. 25. 10:37 - Szerkesztve: dekanyz
Nem artana egy ilyen topic is, hatha nem csak engem erdekel a C++.
Elso kerdes az lenne, hogy miert kozel 2M a merete egy tok egyszeru C++ programnak.(MOS-on forditva gcc 4.4.5-el)? Kb. errol a programrol van szo: cout << "Hello World!" << endl;
Edit: A kb. hasonlo funkcionalitasu C kod (printf("Hello World!");) nagyjabol 10kB korul van.
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Feb. 25. 12:39 - Szerkesztve: charlie
Ez nem MorphOS specifikus. Illetve maximum annyiban, hogy MorphOS-en, mivel a rendszer nem követeli meg a libc/libc++ jelenlétét mint egy Linux, ezért a libc++ és a libc MorphOS-en alapból statikusan linkelt.
Most kipróbáltam i386 Linuxon, statikus linkeléssel fordítva a C-s verzió 700K, a C++ verzió 1.4MB...
Ezen felül azért is nagy a különbség, mivel a C-s kódod valószínűleg mégis dinamikusan linkelt MorphOS-en, ha ugyanis nem adod meg a -noixemul kapcsolót a GCC-nek, akkor a fordított kód ixemul.library-t fog igényelni mint futtatókörnyezet, ami dinamikusan linkelt (és MorphOS natív alkalmazásoknál - értsd: nem Un*x port - erősen ellenjavalt). Szóval még csalóka is.
Egyszóval, amikor C++ alkalmazást írsz Linuxon, és azt hiszed "csak" kb. 8K egy Linuxos C++ helloworld exe, akkor tévedsz, mert kapásból beránt magának egy lónagy libet...
Na kicsit szétszórt lett, de azért talán érthető. :)
|
dekanyz
Tag
|
# Elküldve: 2013. Feb. 25. 12:45 - Szerkesztve: dekanyz
Ertem... koszi a valaszt.
A fura az, hogy Snoopiummal csekkolva, kb. mind a ketto u.azt a libet nyitja meg. (A nevere most nem emlekszem).
Szoval, valoszinuleg -noixemul-al is maradnak dinamikusan linkel reszek C-s programnal.
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Feb. 25. 14:06
Mivel az AmigaOS (es a MorphOS) API-ja az (exec.library-t leszamitva, ami alapbol meg van nyitva a program indulasakor) kizarolag OpenLibrary()-n at megnyithato .library-kon at erheto el, ezert ertheto, hogy a libc es a libc++ is megnyitja aztan ezeket a libeket, hiszen azokra epul.
|
dekanyz
Tag
|
# Elküldve: 2013. Feb. 25. 21:25
Ha a C-s es C++-os verziot is -noixemul-al forditom le, akkor a C-s 30kB, a C++-os 1.8MB. Ebben az esetben a libnix statikusan linkelodik, ami latszik is a fajl mereteken.
Ha futtatom oket es a Snoopiummal raszurok a OpenLibrary hivasokra, akkor a C-s programnal nincs egyaltalan semmilyen hivas, mig a C++-osnal a locale.library is megnyilik.
Szoval, szerintem kicsit fura!
|
YADA
Tag
|
# Elküldve: 2013. Feb. 25. 22:41
Maris jol latszik mekkora kihivas 4K demot irni :-) kb barmiben
|
Lazi
Mr. AmiCon
|
# Elküldve: 2013. Feb. 25. 22:54
Akkor a C++ sem kevesbe bloatware, mint a Hollywood :) Ott is 2MB korul indul a hello world.
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Feb. 26. 08:50
@dekanyz: Mivel a libc++-ban vannak olyan dolgok, aminek kell pl. a locale (string rendezéshez pl, így saccra), míg a libc sokkal egyszerűbb és nincsenek benne ilyenek? :)
|
dekanyz
Tag
|
# Elküldve: 2013. Feb. 26. 09:42
@Charli: Az OK, de hogy a banatban fer el 30k-ban a C-s verzio. Ahogy irtad, Linuxon statikusan linkelve 700k volt. Itt pedig semmi egyebet nem linkel...
|
ratman
Kék troll
|
# Elküldve: 2013. Feb. 26. 10:27
Mer a slimuxon hozzálinkeli a libc-t. AmigaOS-en meg nem nagyon kell neki semmit se.
|
dekanyz
Tag
|
# Elküldve: 2013. Feb. 26. 11:21
Linux-on nem linkel statikusan semmit, csak ha kulon kered. A C-s verzio 6.5 kB, a C++-os 8.5.
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Feb. 26. 12:35 - Szerkesztve: charlie
MorphOS-en nincs dinamikus libc++, csak statikus. Helyesebben ez sem igaz, mert le tudnad forditani onallo .so-ba, es betolteni a programod inditasakor, es akkor dinamikusan linkelt, csak minek. Kevesse kozismert teny, hogy a MorphOS elf loadere is tamogatja .so-k betolteset (1.x ota biztosan, szoval boven az OS4 hasonlo ficsore elott), pl. ha jol emlekszem a Quake III port, es nehany egyeb szoftver hasznalja is.
Csak az .so hellt elkerulendo sosem emeltek rendszerszintu funkciova mint pl. OS4-en (ahol kesobb szinten rossz otletnek bizonyult), meg a single address space miatt itt is be kellene tolteni minden .so-t minden exehez csak ugy mint OS4-en, ami a MorphOS/AmigaOS nativ .library-kra nem igaz.
Szoval: az ixemul.library egy dinamikusan linkelt "libc" (es egy komplett POSIX kernel kornyezet, Amigahoz illesztve, eredetileg asszem valamelyik BSD-bol), a statikusan linkelt libc (libnix neven) meg nagyon kicsi, mivel az AmigaOS API fole (exec es dos.library tobbnyire) csak egy nagyon vekony reteget kell huzni, hogy a libc dolgait tudja. Ami pl. libc++-ra nem igaz. Plusz a halozati dolgokat Amigan ha nem ixemullal csinalod, akkor kulon kell kezelni, (bsdsocket.library hasznalata kozvetlenul), ami megint csak csokkenti a libc meretet, stbstb...
|
dekanyz
Tag
|
# Elküldve: 2013. Feb. 26. 12:55
Vegul is, szempillantas helyett min. fel masodperc alatt indul el egy C++ program. Ezzel meg egyutt lehet elni! ;)
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Feb. 26. 16:48
Én máshogy kérdezném: mi olyat tud a C++, amit nem lehet nélküle megoldani? :)
Ha portolsz egy appot, akkor még oké, hogy mit akarsz C++-szal, de egy natív MorphOS app mit profitál belőle? Ha a C++ különböző adat-konténerei hiányoznak, akkor a MUI-ban és egyéb API-kban elég sokmindenre a MorphOS is választ ad "sima" C-ben. Vagy van rá valami natív .library. Persze ha az a cél, hogy C++-ban írd, akkor nem kérdeztem semmit... :)
|
dekanyz
Tag
|
# Elküldve: 2013. Feb. 26. 22:49
Hat, az lenne a cel, hogy C++-t kicsit gyakoroljam/juk. Kicsit fura ez a regi amigas objektum orientalt kornyezet C-ben megvalositva.
Masik dolog, hogy annyi idom nincs erre, hogy csak az amigas libekkel irjak valamit, mert azert, elegge nagy falat. Ilyenkor sajnalom, hogy eladtam az 1200-esem regen, mert akkoriban joval tobb idom lett volna bele folyni ezekbe a dolgokba... :(
Masik oldala, hogy azzert a C++-al megvalosithato programozasi stilus is jobban tetszik, mint a szokvanyos C-s (kibogozhatatlan makrok, dupla/tripla pointerek, stb.), de ez mar az en bajom.
|
dekanyz
Tag
|
# Elküldve: 2013. Már. 04. 22:26
Libraryt szeretnek forgatni. MOS-on hogy megy az ilyesmi?
Statikus linkelesre gondoltam elso korben.... Nem tom, melyik lenne a celszerubb!
Van erre valami tutorial valahol?
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Már. 05. 06:55
A statikus linkelés teljesen úgy megy mint pl. Linuxon, gyártasz egy .a fájlt a lefordított .o fájljaidból, amit hozzálinkelsz az appodhoz és kész. Szerintem erről vannak tutorialok a neten, tényleg semmi MorphOS specifikus nincs benne.
Viszont ha később dinamikus linkelést is akarsz, és MorphOS-specifikus .library-t gyártani, na az szép baleset... :) Illetve nem nehéz, csak nagyon máshogy megy, mint más platformokon, tehát nem annyi, hogy "oké, akkor ebből most .so-t gyártok .a helyett, helló" hanem a kódnak tudnia kell róla, hogy ő miben fut.
Ez amúgy annyira nem vészes mint elsőre hangzik, néhány dolgot kell pluszban megcsinálni ill. figyelembe venni.
|
Chain-Q
Divatamigás
|
# Elküldve: 2013. Már. 05. 10:58
Még az jutott eszembe mint MorphOS specifikus dolog, hogy általában eléggé ellenjavalt dolog ixemul.library-hoz fordított libeket libnix-szel (a sima libc) használni és vica-verza. Ez csak statikus libekre vonatkozik, a .library-k nem érintettek.
|
dekanyz
Tag
|
# Elküldve: 2013. Már. 05. 11:01
OK... Egyenlore asszem nem lib-ezek.
|