Sie sind nicht angemeldet.

1

01.02.2012, 23:13

Verständnis-Frage march=btver1 oder native?

Hallo,

ich habe ein Lenovo Thinkpad X121e. Es hat eine AMD E-450 CPU, also aus der AMD 14h-Prozessor-Familie. In der make.conf hatte ich ursprünglich "-march=btver1" angegeben, frei nach der GCC documentation:

Zitat


btver1
AMD Family 14h core based CPUs with x86-64 instruction set support. (This supersets MMX, SSE, SSE2, SSE3, SSSE3, SSE4A, CX16, ABM and 64-bit instruction set extensions.)


Leider bekomme ich dann so garstige Fehler wie diesen bei "emerge tuxonice-sources":

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
>>> Failed to emerge sys-apps/tuxonice-userui-1.0, Log file:

>>>  '/var/tmp/portage/sys-apps/tuxonice-userui-1.0/temp/build.log'

 * Messages for package sys-apps/tuxonice-userui-1.0:

 * ERROR: sys-apps/tuxonice-userui-1.0 failed (compile phase):
 *   emake tuxoniceui_text failed
 * 
 * Call stack:
 *     ebuild.sh, line  85:  Called src_compile
 *   environment, line 2096:  Called die
 * The specific snippet of code:
 *       emake CC="$(tc-getCC)" CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" tuxoniceui_text || die "emake tuxoniceui_text failed";


Ändere ich "-march=btver1" nach "-march=native" ab, gibt es keine Probleme.

Meine Fragen: Was ist falsch an btver1? Wieso streikt gcc? Kann ich den Fehler irgendwie beheben?
Falls nicht, ergäben sich aus "-march=native" irgendwelche Nachteile?

Danke und besten Gruß,
Ge3ntoo

edit: meine GCC-Version ist 4.5.3-r1

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Ge3ntoo« (09.04.2012, 10:31) aus folgendem Grund: gcc-Version hinzugefügt.


2

02.02.2012, 15:58

Gib doch mal /var/tmp/portage/sys-apps/tuxonice-userui-1.0/temp/build.log durch und ein "cat /proc/cpuinfo"

Wg. "native": Ich persönlich kenne noch keine Berichte über negative Auswirkungen dieses Switches.
http://www.dyle.org
IM-Account (Jabber!) sind auf meiner HP ...
There is no place like /home

http://www.gentooforum.de
http://www.gentoofreunde.org

<div>how to annoy a web developer?</span>

3

02.02.2012, 16:33

Zu "-march=native": Inzwischen ist diese Einstellung offiziell empfohlen. Siehe http://en.gentoo-wiki.com/wiki/Safe_Cflags.
Der GCC sucht sich die richtigen Einstellungen selbst aus.

Es gibt zwei Szenarien wo man es nicht nutzen kann, und zwar wenn ein GCC auf einen anderen Rechner bauen soll und somit die Einstellungen nicht bestimmen kann. Also Stichworte Cross-Compiling und DistCC. Aber für die normale Gentoo-Nutzung ist "native" das richtige.

Im og. Link ist auch eine Coding-Zeile drin mit der man raufinden kann was GCC nimmt, wenn man "native" setzt, falls es einen interessiert:

Quellcode

1
cc -march=native -E -v - </dev/null 2>&1 | grep cc1
Auch wenn Open-Source kostenlos ist, ist sie nicht umsonst. Dein Preis ist Dein Engagement und Mitarbeit an OS-Projekten.
Wenn Du keinen Preis bezahlen willst, bist Du die Ware. Und das ist nicht Open Source, geschweigedenn frei.

4

02.02.2012, 20:33

Hm ich hab -march=i686 (ist glaub Standardeinstellung). Sollte ich auch mal auf -march=native wechseln? Wie kann man nachschauen, was GCC bei -march=native für ne Einstellung nimmt?


5

02.02.2012, 21:49

@TayTay
Hm, hast du den Beitrag von bell übersehen?
Dort wurde doch genau das beschrieben ;)

6

03.02.2012, 21:59

Vielen Dank. Ich werde dann mal getrost weiterinstallieren.

es grüßt,
ge3ntoo