Hallo,
ich möchte gerne mit meinem Desktop PC einige Pakete für meinen Laptop bauen. Z.B. webkit-gtk, das auf meinem Laptop über 5 Stunden kompiliert. Jetzt baue ich allerdings grundsätzlich alles mit -march=native, was natürlich für mein Szenario nicht mehr funktionieren kann. Jetzt frage mich, wie ich die CFLAGS am besten anpasse, damit die gebauten Pakete auch auf meinem Laptop laufen.
Die momentan aktivierten Flags lasse ich mir mit gcc -march=native -E -v - </dev/null 2>&1 | grep cc1 ausgeben.
Desktop
|
Quellcode
|
1
|
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -E -quiet -v - -march=amdfam10 -mcx16 -msahf -mno-movbe -mno-aes -mno-pclmul -mpopcnt -mabm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mno-avx -mno-avx2 -mno-sse4.2 -mno-sse4.1 -mlzcnt -mno-rdrnd -mno-f16c -mno-fsgsbase --param l1-cache-size=64 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=amdfam10
|
Laptop
|
Quellcode
|
1
|
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.7.3/cc1 -E -quiet -v - -march=btver1 -mcx16 -msahf -mno-movbe -mno-aes -mno-pclmul -mpopcnt -mabm -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mno-avx -mno-avx2 -mno-sse4.2 -mno-sse4.1 -mlzcnt -mno-rdrnd -mno-f16c -mno-fsgsbase --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=btver1
|
Was nehme ich denn jetzt am besten in die make.conf auf? -march weglassen und stattdessen die Flags manuell setzen? Wenn ja, welche genau? Alles, was übereinstimmt?
Die -march Einträge bedeuten
amdfam10
AMD Family 10h core based CPUs with x86-64 instruction set support. (This supersets MMX, SSE, SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM and 64-bit instruction set extensions.)
bdver1
AMD Family 15h core based CPUs with x86-64 instruction set support. (This supersets FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM and 64-bit instruction set extensions.)
Mit Hilfe der Dokumentation
https://gcc.gnu.org/onlinedocs/gcc-4.7.3…_002d64-Options würde ich jetzt folgendes vorschlagen:
|
Quellcode
|
1
|
CFLAGS="-O2 -pipe -mmmx -msse -msse2 -msse3 -msse4a -mabm -m64 -mcx16 -msahf -mno-movbe -mno-aes -mno-pclmul -mpopcnt -mno-lwp -mno-fma -mno-fma4 -mno-xop -mno-bmi -mno-bmi2 -mno-tbm -mno-avx -mno-avx2 -mno-sse4.2 -mno-sse4.1 -mlzcnt -mno-rdrnd -mno-f16c -mno-fsgsbase"
|
Was bedeutet eigentlich dieses -mno? Also -mno-sse? Ich merke gerade, mit CFLAGS bin noch nicht so wirklich vertraut
![:(](wcf/images/smilies/sad.png)
. Wäre das so ok oder mache ich gerade ziemlichen Unsinn? Vielleicht kann mir hier jemand auf die Sprünge helfen.