Jak mogę się dowiedzieć, jaki jest domyślny argument -march
dla bieżącej architektury, jeśli nie dostarczę żadnej?Uzyskiwanie aktualnej architektury GCC
Odpowiedz
gcc -dumpmachine
daje Tobie trójkę docelową, np. x86_64-unknown-linux-gnu
Jeśli gcc -v
pokazuje GCC został skonfigurowany z opcją --with-arch
(lub --with-arch-32
i/lub --with-arch-64
) to jest to, co będzie domyślnym.
Bez opcji --with-arch
(a jeśli nie jest używany niestandardowy plik specyfikacji), używany łuk będzie domyślny dla celu.
dla x86, włącznie GCC 4.4, domyślna dla 32-bitowych był -march=i386
i dla 64-bitowego była -march=x86-64
(uwaga myślnik zamiast podkreślenia.)
dla x86 z GCC 4.5 i nowszych wersjach domyślny łuk jest wywnioskowany z docelowego tripletu, tj. konfiguracja dla i586-pc-linux-gnu
oznacza domyślną wartość -march=i586
, konfiguracja dla core2-pc-linux-gnu
oznacza domyślną wartość .
Niektóre inne platformy również określają domyślny łuk z docelowej triplety (i zrobiono to od razu przed GCC 4.4), np. ultrasparc2-sun-solaris2.10
implikuje -march=ultrasparc2
.
Opcje 'gcc -dumpmachine' są idealne. Kolejny przykład tego, jak dwie sekundy wyszukiwania w stackoverflow pozwala uniknąć innego odczytu strony man gcc! –
Przeczytałem instrukcję i sprawiło mi to przyjemność. Miałem na myśli to, że możesz przeszukiwać stackoverflow z bardziej ludzkimi wyszukiwaniami zamiast przechodzić przez stronę man. Na przykład użyłem wcześniej 'gcc -dumpmachine', ale nie pamiętałem nazwy argumentu. Jednak czasami nie mogę wykonać łatwego wyszukiwania na stronie podręcznika dla poprawnego argumentu. Może powinienem zmienić "unikanie kolejnej lektury", aby "uniknąć kolejnego przeszukiwania";) –
Ach, tak, oczywiście, to na pewno łatwiejsze niż zapamiętanie dokładnego terminu do wyszukania w instrukcji, ponieważ gdybyś mógł to zapamiętać, nie zrobiłbyś tego. T musi to sprawdzić! –
Uruchomienie polecenia
gcc -v
pokaże coś takiego:
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.7.1/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /build/src/gcc-4.7.1/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-shared --enable-threads=posix --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-clocale=gnu --disable-libstdcxx-pch --enable-libstdcxx-time --enable-gnu-unique-object --enable-linker-build-id --with-ppl --enable-cloog-backend=isl --disable-ppl-version-check --disable-cloog-version-check --enable-lto --enable-gold --enable-ld=default --enable-plugin --with-plugin-ld=ld.gold --with-linker-hash-style=gnu --enable-multilib --disable-libssp --disable-build-with-cxx --disable-build-poststage1-with-cxx --enable-checking=release
Thread model: posix
gcc versie 4.7.1 (GCC)
Linia Target:
to, co chcesz. Powinieneś być w stanie wywnioskować z tego wystarczającą ilość informacji.
Jakiej części "x86_64-unknown-linux-gnu" możesz użyć z '-march'? –
Pierwsza część: 'x86_64'. Ale to jest ogólny. Pełna lista znajduje się w podręczniku GCC: https://gc.gnu.org/onlinedocs/gcc-5.1.0/gcc/x86-Options.html#x86-Options. – rubenvb
Myślę, że odpowiedź brzmi, że nie ma żadnego odpowiednika. Albo nie określisz -march=
, a kompilator użyje minimalnego zestawu instrukcji architektury, albo podasz parametr -march=
i używa funkcji dowolnego modelu procesora, o który prosisz. Tak więc nie ma możliwości napisania opcji -march=
, która jest odpowiednikiem pominięcia opcji -march
.
Może, jeśli wyjaśnisz, co uzasadniało pytanie, możemy poprawić tę odpowiedź.
Znalazłem ten klejnot na GCC mailing list że drukuje Wartość domyślna -march
i mtune
parametry:
$ echo | gcc -v -E - 2>&1 | grep cc1
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.9.0/cc1 -E -quiet -v - -mtune=generic -march=x86-64
Zasadniczo kompilujesz pusty plik ze standardowego wejścia i robiąc tak, drukowanie poleceń.
Ma sens wskazać, że '-m32' i' -m64' mogą być użyte w wywołaniu 'gcc', aby zapytać o 32- lub 64-bitowe (domyślne) cele. – 0xC0000022L
Możesz użyć gcc -Q --help=<type>
, aby wyświetlić listę bieżących wartości opcji dla danego <type>
. Zatem:
$ gcc -Q --help=target | grep march
-march= x86-64
$ gcc -m32 -Q --help=target | grep march
-march= i686
$ i686-w64-mingw32-gcc -Q --help=target | grep march
-march= pentiumpro
Edycja: Faktycznie, ta opcja nie jest tak ogólnie użyteczne, ponieważ wydaje się, ponieważ docelowe specyficzne domyślnych are not reflected in the output.
- 1. Uzyskiwanie aktualnej matrycy ModelView
- 2. Uzyskiwanie aktualnej nazwy klasy, w tym pakietu
- 3. Uzyskiwanie bieżącego modelu wyjątku GCC
- 4. Opcje GCC do optymalizacji dla danej architektury procesora
- 5. gcc 4.2.1 Problem z połączeniem: Niezdefiniowane symbole dla architektury x86_64
- 6. Uzyskiwanie liczby wierszy wstawionych dla WŁĄCZENIA DUPLIKOWANEJ WIELKIEJ AKTUALNEJ Wstawki?
- 7. Uzyskiwanie aktualnej godziny i daty w 24-godzinnej skali czasowej
- 8. uzyskiwanie aktualnej godziny, minut i sekund w telefonie iPhone
- 9. Uzyskiwanie kompilacji GCC bez wstawiania wywołania memcpy
- 10. Niezdefiniowane symbole architektury x86_64: Z jakiej architektury należy korzystać?
- 11. JavaScript odświeżanie aktualnej strony
- 12. Komenda aktualnej wersji Subversion
- 13. Uzyskaj nazwę aktualnej klasy?
- 14. Uzyskiwanie dostępu do chronionych członków z podklas: gcc vs MSVC
- 15. ustawienie NSDate do aktualnej UTC
- 16. git: pobieranie aktualnej wersji tylko
- 17. Dodaj dni do aktualnej daty
- 18. Uzyskiwanie aktualnej daty w JSTL EL i robienie na niej arytmetyki
- 19. SIMD kontra architektury wektorowe
- 20. Zrozumienie architektury kontaktów Androida
- 21. Tworzenie architektury w Javie
- 22. brak wymaganego architektury x86_64
- 23. Książki dotyczące architektury oprogramowania
- 24. Dokumentacja architektury lib2to3
- 25. najlepsza praktyka architektury phonegap
- 26. C# DLL's wtyczki architektury
- 27. Schemat architektury logicznej
- 28. niezdefiniowane symbole dla architektury i386
- 29. clang: jak wyświetlić obsługiwane architektury docelowe?
- 30. wyszukiwanie tekstu dla architektury phoenix
Czy 'gcc -v' zawiera wystarczającą ilość informacji? – Jens