Mam plik źródłowy, który mogę wstępnie przetworzyć przy użyciu opcji -E
i -P
(używając GCC 4.1.2 dla platformy osadzonej na platformie vxWorks). Wszystkie pozostałe opcje są takie same, jak podczas kompilowania pliku. Dostępne są następujące opcje:Kompilowanie wcześniej przetworzonych zmian plików wyjściowych
-Wall
-march=pentium
-nostdinc
-O0
-fno-builtin
-fno-defer-pop
-g
-c
-o
oraz wszystkie ścieżki dołączania. Teraz, gdy skompiluję ten wstępnie przetworzony plik, wynikowy plik obiektowy jest znacznie mniejszy (około 30%) niż podczas bezpośredniego kompilowania oryginału. A kiedy łączę program, linker narzeka na brakujące symbole (wszystkie w kodzie użytkownika), co znowu nie zdarza się przy korzystaniu z oryginalnego pliku źródłowego. Dlaczego istnieje różnica? Czy jest jakiś sposób, aby to zadziałało?
Modyfikuję regułę, która tworzy plik obiektowy, po prostu dodając flagę '-E'- i' -P', bez usuwania czegokolwiek, więc jestem prawie pewien, że używam poprawnego kompilatora i mam wszystkie definiuje. –