Zwiększenie pliku wykonywalnego do 5 MB !

0

Muszę pokazać w systemie linux, że biblioteka statyczna większa rozmiar pliku wykonywalnego, tworzę plik biblioteczny o rozmiarze 700 KB wrzucając tam masę jakichś funkcji ale plik wykonywalny do którego to dołaczam sie nie zwiększa : / jak zwiększyć rozmiar pliku wykonywalnego : X ?

1

Współczesne kompilatory to są sprytne stworzenia i potrafią usuwać nieużywane fragmenty kodu a a nawet całe zbiory symboli. Z rzeczy, które przychodzą mi teraz do głowy:

  1. Napisać kod używający wszystkich funkcji z biblioteki, np. jako sekwencja wywołań f1();,f2();,..,fN(); w main-ie
  2. Wyłączyć optymalizacje (ogólnie nie zalecane, ale w tym wypadku będzie większa szansa, że kompilator nie wytnie dead code-u),
  3. Użyć jakiejś gotowej 5 MB-owej biblioteki linkowanej statycznie (np. coś z Boost-a u mnie libboost_log_setup.a z Boost.Log waży nieco ponad 5MB)

Zacząłbym od pkt. 2, bez tego prawdopodobnie będzie ci b. ciężko przekroczyć 5MB (wiele naprawdę dużych projektów które widziałem po optymalizacjach i stripowaniu kurczyło się bez problemu do kilku MB), oczywiście możesz dołączać debug symbole, ale to będzie już IMO oszustwo :).

1

Możesz w bibliotece lub w mainnie programu zadeklarować:

static const char wypelnienie[5000000] = {"TEXT"};
 
0

A ja bym poszedł inną drogą. Zrobiłbym w Qt projekt wyświetlający zwykłe okienko z przyciskiem, albo i nawet samo okno. W takiej sytuacji zrobiłbym kompilację z dynamicznymi bibliotekami oraz ze statycznymi. Od razu zobaczysz różnicę w wadze pliku wykonywalnego.

Pytanie czemu akurat chcesz mieć te 5MB? To jakoś z góry narzucone? Jeśli tak to bardzo głupie ograniczenie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1