Kirjoittaja Aihe: pienen binäärin teko ubuntulla ja gcc:llä (vaikkapa 4K demokisaan)  (Luettu 2966 kertaa)

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Kuinka ubuntulla ja gcc:llä tehdään pieniä binääri-tiedostoja? En tarkoita nyt parametrejä -s -O3. Enkä tarkoita nasmiin siirtymistä. Minulla on epäilys, että se kääntää siihen mukaan yhtä ja ja toista, enkä osaa itse lähteä oikeaan suuntaan tämän kanssa.

Pistetään esimerkkinä 4k demo, josta löytyy lähdekoodit:
http://demozoo.org/productions/37728

Latasin tuon, pistin sokkona make ja sain ohjelman (joka toimii), jonka koko on 31504, joka on hyvin kaukana mainostetusta/vaaditusta 4096:sta.
strip tiputtaa koon 14816 tavuun, mutta vieläkin on kaukana. (sstripillä saa 13076 tavuun, mutta ei sekään riitä).

(lisäys: tuo valmiina jaettava binääri muuten on 20480 tavua, readme:ssä lukee että 4K at Assembly'07, mitä en nyt ymmärrä?)

janne

  • Käyttäjä
  • Viestejä: 5150
    • Profiili
Kuinka ubuntulla ja gcc:llä tehdään pieniä binääri-tiedostoja? En tarkoita nyt parametrejä -s -O3. Enkä tarkoita nasmiin siirtymistä. Minulla on epäilys, että se kääntää siihen mukaan yhtä ja ja toista, enkä osaa itse lähteä oikeaan suuntaan tämän kanssa.

samaa kamaa se pistää kuin muutkin kääntäjät. jotain optioita on, mutta -Os ottaa useimmat niistä käyttöön. itse asiassa -O3 tekee suurempaa binääriä kuin -O2 tai varsinkin -Os

Pistetään esimerkkinä 4k demo, josta löytyy lähdekoodit:
http://demozoo.org/productions/37728

Latasin tuon, pistin sokkona make ja sain ohjelman (joka toimii), jonka koko on 31504, joka on hyvin kaukana mainostetusta/vaaditusta 4096:sta.
strip tiputtaa koon 14816 tavuun, mutta vieläkin on kaukana. (sstripillä saa 13076 tavuun, mutta ei sekään riitä).

strippaaminen ei yleensä riitä, vaan kon pienentämiseksi tehdään yleensä muitakin kikkailuja kuten pakkaamista ym.. kaikkea ei välttämättä aina edes paljasteta, mutta esim. tällä sivulla on jotain.

(lisäys: tuo valmiina jaettava binääri muuten on 20480 tavua, readme:ssä lukee että 4K at Assembly'07, mitä en nyt ymmärrä?)

ko jaettavaa binääriä ei ole selvästi pakattu mitenkään, mikä ei kai ole tarkoituskaan niitä jaettaessa ;)

"4K at Assembly'07" puolestaan tarkoittanee, että kyseinen tekele osallistui 4K demo/introkisaan assemblymessuilla vuonna 2007.
Janne

aapo

  • Käyttäjä
  • Viestejä: 195
    • Profiili
Kiitos linkkivinkistä, paljon hyvää asiaa, siellä oli virhe tuossa elfkickersin (eli tuo sstrip) linkissä, pistän sen tähän kun sattui olemaan käsillä,
http://www.muppetlabs.com/~breadbox/software/elfkickers.html

Tämä oli juuri sitä mitä etsin. Senkun kirjoittaa c-koodia ja ohjelma rutistaa kasaan. Jos jotakuta kiinnostaa alustapitäen pienen tekeminen, niin tossa on aika kovaa settiä.
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

Jos käsityönä voi tehdä noin hurjia, lopullisen tiedoston koko on 1/50 ilman kikkailua käännetystä, niin olisiko mitenkään mahdollista tehdä tuota automaattisesti? Sitä kait se kääntäjien kehittäminen sitten juuri on. (tuossa kaikista hurjimmassa kyllä rikotaan standardeja ja kun 2.2 ja 2.4 kernelit eivät olleet kovin nirsoja tietyissä kohdissa, niin niissä on sitten oikaistu)