Hírek | Archívum | Fórum | IRC | Amiga | AmigaOS | FAQ | RSS

 - Fórumok - Regisztráció - Keresés - Statisztika - Szabályzat - Pegasos.hu fórum
forum.amigaspirit.hu / Fejlesztés / C++
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.

forum.amigaspirit.hu / Fejlesztés / C++
 
 

Powered by community script miniBB™ © 2001-2019