2010-06-29 14 views
13

Przeniosłem się z wersji gcc 4.0.3 do 4.3.3 i zdałem sobie sprawę, że -mfpmath został ustawiony domyślnie na sse w gcc 4.3.3. To faktycznie spowodowało błędy w mojej aplikacji. W wersji 4.0.3 -mfpmath było 387.gcc 4.3.3 opcje kompilatora włączone domyślnie

Chcę wiedzieć, w jaki sposób mogę uzyskać wszystkie domyślne opcje włączone przez gcc dla danej wersji. Jak mogę zrzucić zestaw wszystkich opcji używanych przez gcc podczas kompilacji. Umożliwia to porównanie wersji 4.0.3 i 4.3.3.

W ogóle to będzie wspaniale, jeśli mogę wiedzieć obszerną listę rzeczy muszą być sprawdzone przed udaniem się na zmianę wersji w gcc. (Jak to ma wpływ na wydajność i funkcjonalność.)

Odpowiedz

2
  1. Wersja, którą mam tutaj z gcc 4.3.3, nie ma zachowania, na które narzekasz. Sam ją skompilowałem, więc jestem prawie pewien, że musi istnieć inny powód zmiany, którą widzisz, niż tylko wersję gcc (jak kompilacja dla 64-bitów, która zawsze używała Sse AFAIR).

  2. gcc ma uwagi do wydania, które powiadamia o zmianach zachowań. Są one pakowane z dystrybucją źródeł GCC i są dostępne w Internecie. W przypadku gcc 4.3 patrz http://gcc.gnu.org/gcc-4.3/changes.html.

22

gcc -v Q (plik_wejściowy)

Wystarczy podstawowa maleńkim c lub pliku cpp jako pliku wejściowego. Powinieneś podać dużą listę wszystkich opcji przekazanych do gcc domyślnie, jeden z nich może być przyczyną włączenia fse sse fp.

+0

Jaka jest różnica między wyjściami pochodzącymi z gcc-Q -v: "opcje przekazane" i "opcje włączone"? – Maximilian

17

Oprócz kompilowania konkretnego pliku -Q -v, który wyświetla listę przekazanych i włączonych opcji, a także wiele innych informacji o wersji, konfiguracji i czasie, można również użyć opcji gcc -Q --help=target, aby wyświetlić tylko domyślną lokalizację docelową Opcje kompilatora:

$ gcc --version | head -1 
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 
$ gcc -Q --help=target 
The following options are target specific: 
    -m128bit-long-double     [disabled] 
    -m32         [disabled] 
    -m3dnow        [disabled] 
    -m3dnowa        [disabled] 
    -m64         [enabled] 
    -m80387        [enabled] 
    -m8bit-idiv       [disabled] 
    -m96bit-long-double     [enabled] 
    -mabi= 
    -mabm         [disabled] 
    -maccumulate-outgoing-args   [disabled] 
    -maes         [disabled] 
    -malign-double      [disabled] 
    -malign-functions= 
    -malign-jumps= 
    -malign-loops= 
    -malign-stringops      [enabled] 
    -mandroid        [disabled] 
    -march=        x86-64 
... 

również obejmować listę opcji asemblera i linkera docelowe specyficzne (ale nie jest obecnie ich ustawienia domyślne), użyj --target-help zamiast --help=target.

1

Oprócz opcji -Q --help=target w przypadku opcji specyficznych dla celu można użyć parametru -Q -O<n> --help=optimize, aby wyświetlić informacje o tym, który z optymalizatorów jest włączany lub wyłączany na danym poziomie optymalizacji. -Q również wydaje się działać samodzielnie z innymi argumentami --help=<blah>.

Powiązane problemy