Wie kann ich herausfinden, was das -march
Standardargument für die aktuelle Architektur ist, wenn ich keine liefern?Aktuelle GCC-Architektur erhalten
Antwort
gcc -dumpmachine
gibt Ihnen das Zieltriplett, z.B. x86_64-unknown-linux-gnu
Wenn gcc -v
zeigt GCC mit einer --with-arch
Option konfiguriert wurde (oder --with-arch-32
und/oder --with-arch-64
), dann ist das, was der Standard sein wird.
Ohne --with-arch
Option (und wenn es keine Datei benutzerdefinierte Spezifikationen im Einsatz), dann der Bogen verwendet wird, die Standardeinstellung für das Ziel sein.
Für x86, bis einschließlich GCC 4.4, war der Standard für 32-Bit--march=i386
und für 64-Bit war -march=x86-64
(man beachte den Bindestrich anstelle von Unterstrichen.)
Für x86 mit GCC 4.5 und späteren Versionen Der Standardbogen wird aus dem Zieltriplet abgeleitet, dh die Konfiguration für i586-pc-linux-gnu
bedeutet, dass der Standardwert -march=i586
ist. Die Konfiguration für core2-pc-linux-gnu
bedeutet, dass der Standardwert -march=core2
ist.
Einige andere Plattformen leiten auch den Standardbogen vom Zieltriplet ab (und haben dies seit GCC 4.4 getan), also z.B. ultrasparc2-sun-solaris2.10
bedeutet -march=ultrasparc2
.
Die 'gcc-dumpmachine' Optionen sind perfekt. Ein weiteres Beispiel, wie eine zwei Sekunden lange Suche auf Stackoverflow ein weiteres Lesen der gcc Manpage verhindert! –
Ich habe das Handbuch gelesen und es genossen. Was ich damit meinte, war, dass Sie stackoverflow mit mehr menschlichen Suchbegriffen durchsuchen können, als die Manpage zu durchlaufen. Zum Beispiel habe ich 'gcc-dumpmachine' zuvor verwendet, konnte mich aber nicht an den Argumentnamen erinnern. Allerdings kann ich in der man-Seite manchmal nicht nach dem richtigen Argument suchen. Vielleicht sollte ich ändern "vermeidet ein anderes Lesen von" zu "vermeidet eine andere Suche durch";) –
Ah ja, fair genug, das ist sicherlich einfacher als sich an den genauen Begriff zu erinnern, nach dem im Handbuch zu suchen, denn wenn Sie sich daran erinnern könnten, würden Sie nicht Ich muss es nachschlagen! –
den Befehl Ausführen
gcc -v
wird so etwas wie diese zeigen:
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)
Die Target:
Linie ist das, was Sie wollen. Sie sollten in der Lage sein, daraus genügend Informationen abzuleiten.
Welchen Teil von "x86_64-unknown-linux-gnu" können Sie mit "-march" verwenden? –
Der erste Teil: 'x86_64'. Aber das ist ein allgemeiner. Eine vollständige Liste finden Sie im GCC-Handbuch: https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/x86-Options.html#x86-Options. – rubenvb
Ich denke, dass die Antwort ist, gibt es keine Entsprechung. Entweder Sie geben -march=
nicht an und der Compiler verwendet den minimalen Befehlssatz der Architektur, oder Sie geben -march=
an und es verwendet Funktionen des gewünschten CPU-Modells. Es gibt also keine Möglichkeit, eine -march=
Option zu schreiben, die der Option -march
entspricht.
Vielleicht, wenn Sie erklären, was die Frage motiviert hat, könnten wir diese Antwort verbessern.
Ich fand dieses Juwel auf dem GCC mailing list, dass die Standard -march
und mtune
Parameter druckt:
$ 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
Grundsätzlich Sie eine leere Datei von stdin kompilieren und während dies zu tun, drucken Sie die Befehle.
Es ist sinnvoll, darauf hinzuweisen, dass '-m32' und' -m64' im Aufruf 'gcc' verwendet werden können, um nach 32-Bit- oder 64-Bit- (Standard) -Zielen zu fragen. – 0xC0000022L
Sie können gcc -Q --help=<type>
verwenden, um die aktuellen Optionswerte des angegebenen <type>
aufzulisten. Also:
$ 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
Edit: Eigentlich ist diese Option nicht als allgemein nützlich, wie es scheint, weil zielspezifische Vorgaben are not reflected in the output.
- 1. aktuelle Kartenausdehnung erhalten
- 2. Erhalten Sie aktuelle Zeit
- 3. Erhalten aktuelle Klasse
- 4. Aktuelle ModelView-Matrix erhalten
- 5. Android erhalten Aktuelle UTC-Zeit
- 6. Java/Servlet: erhalten aktuelle sql.Date
- 7. Aktuelle Ansicht von ViewPager erhalten
- 8. ASP.NET Erhalten Aktuelle Seite Objekt
- 9. JavaFX Timeline erhalten aktuelle Zykluszeit
- 10. Aktuelle Wochentage mit Daten erhalten
- 11. erhalten aktuelle Systemlautstärke auf iPhone
- 12. Aktuelle Aktivität von Application.Context erhalten - MonoAndroid
- 13. SharePoint erhalten aktuelle Listenelement aus einer Sammlung
- 14. CodeIgniter, erhalten aktuelle URI in Controller?
- 15. aktuelle Benutzer-ID durch SELECT-Abfrage erhalten
- 16. Titanlegierung: erhalten aktuelle Fenster aus erforderlich Ansicht
- 17. Android - So erhalten Sie aktuelle Hintergrundbild Name
- 18. Die aktuelle sortierte Spalte in DataTable erhalten
- 19. Aktuelle Position nicht mit cordovaGeolocation erhalten
- 20. Alternative, um aktuelle Kartonposition zu erhalten
- 21. Android: ViewPager FragmentStatePagerAdapter erhalten aktuelle Ansicht
- 22. Die aktuelle Codezeile in Ruby erhalten
- 23. Erhalten Sie aktuelle Datum in cassandra cql
- 24. Dynamisch erhalten Sie die aktuelle Zeilennummer
- 25. erhalten aktuelle CPU-Auslastung in C#
- 26. Powershell Advanced Function erhalten aktuelle ParameterSetName
- 27. Wie kann ich die aktuelle Bildschirmausrichtung erhalten?
- 28. Erhalten Sie aktuelle Aktivität von Fragment
- 29. aktuelle svn-revision in webapp erhalten
- 30. Iphone: Aktuelle Ansichtsabmessungen oder Bildschirmabmessungen erhalten
Liefert 'gcc -v' genügend Informationen? – Jens