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 ?
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:
- Napisać kod używający wszystkich funkcji z biblioteki, np. jako sekwencja wywołań f1();,f2();,..,fN(); w main-ie
- Wyłączyć optymalizacje (ogólnie nie zalecane, ale w tym wypadku będzie większa szansa, że kompilator nie wytnie dead code-u),
- 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 :).
Możesz w bibliotece lub w mainnie programu zadeklarować:
static const char wypelnienie[5000000] = {"TEXT"};
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.