Page 1 of 1

apache2 und cflags

Posted: 2007-01-26 13:53
by bertengel
Hallo,

ich habe eine Frage zu den CFLAGS beim bauen vom apache2 b.z.w. php4
unter Debian sarge.

cat /proc/cpuinfo liefert:

Code: Select all

processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 37
model name      : AMD Opteron(tm) Processor 246
stepping        : 1
cpu MHz         : 1994.724
cache size      : 1024 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow pni
bogomips        : 3923.96
TLB size        : 1088 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 15
model           : 37
model name      : AMD Opteron(tm) Processor 246
stepping        : 1
cpu MHz         : 1994.724
cache size      : 1024 KB
fpu             : yes
fpu_exception   : yes
cpuid level     : 1
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext lm 3dnowext 3dnow pni
bogomips        : 3981.31
TLB size        : 1088 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 40 bits physical, 48 bits virtual
power management: ts fid vid ttp
mein config script sieht folgendermaßen aus:

Code: Select all

CFLAGS="-march=opteron -O2 -pipe"
./configure     --prefix=/usr/local/apache2 
                --with-mpm=prefork 
                --enable-rewrite 
                --enable-so 
                --enable-cache 
                --enable-mem-cache 
                --enable-ssl 
                --enable-http 
                --enable-deflate 
                --enable-headers 
                --with-included-apr 

Alles läuft fehlerfrei durch ... nur müsste ich nicht im make Output diese Compiler Optimierung sehen?
Dort findet sich keine --march=opteron Option wieder.

eine Zeile aus dem make Output sieht z.b. so aus:

Code: Select all

/bin/sh /usr/local/src/httpd-2.2.4/srclib/apr/libtool --silent --mode=compile gcc -g -O2 -pthread   -DHAVE_CONFIG_H -DLINUX=2 -D_REENTRANT -D_GNU_SOURCE   -I./include -I/usr/local/src/httpd-2.2.4/srclib/apr/include/arch/unix -I./include/arch/unix -I/usr/local/src/httpd-2.2.4/srclib/apr/include  -o passwd/apr_getpass.lo -c passwd/apr_getpass.c && touch passwd/apr_getpass.lo
das ist doch alles Standard ... oder?
Werden meine Optimierungen ignoriert?

Ich bin dankbar für jeden Tip.

Mike

Re: apache2 und cflags

Posted: 2007-01-26 15:11
by Joe User

Code: Select all

CFLAGS="-march=opteron -O2 -pipe" 
CXXFLAGS="-march=opteron -O2 -pipe" 
./configure --prefix=/usr/local/apache2 

Re: apache2 und cflags

Posted: 2007-01-26 15:31
by bertengel
Danke für deine Antwort... mit dem CXXFLAGS (und der korrekten Backslash :) ) bekomme ich nun folgenden Output

Code: Select all

configuring package in srclib/apr now
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
Configuring APR library
Platform: x86_64-unknown-linux-gnu
checking for working mkdir -p... yes
APR Version: 1.2.8
checking for chosen layout... apr
checking for gcc... gcc
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.
configure failed for srclib/apr
wie gesagt - ohne CXXFLAGS läuft alles fehlerfrei

fehlt mir ein andere c-compiler? ... installiert ist g++, cpp
und warum steht dort eigentlich x86_64-unknown-linux-gnu?

Re: apache2 und cflags

Posted: 2007-01-26 15:46
by Roger Wilco
bertengel wrote:fehlt mir ein andere c-compiler? ... installiert ist g++, cpp
Schau halt ins config.log...
bertengel wrote:und warum steht dort eigentlich x86_64-unknown-linux-gnu?
Weil -march=opteron genau das impliziert -> `man gcc`. Wenn du ein 32-Bit Betriebssystem hast (`uname -m`), musst du einen anderen (32-bittigen) CPU-Typ angeben. Am einfachsten wäre das mit i686.

Re: apache2 und cflags

Posted: 2007-01-26 16:00
by bertengel
x86_64-unknown-linux-gnu steht auch ohne --march=opteron ... ich habe ein x86_64 system

Re: apache2 und cflags

Posted: 2007-01-26 17:26
by oxygen
dann ändere doch den CHOST, z.B.
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=opteron -O2 -pipe"
CXXFLAGS="${CFLAGS}"
um aufs Problem zurück zu kommen. Wahrscheinlich ist der Debian gcc zu alt für die Optimierungen. Ist doch sicher etwas aller 3.3.x oder?
Wenn du dein System optimiert haben willst, nehm lieber direkt Gentoo. Ohne optimierte Libarys und Toolchain bringt dir die Optimierung des Apaches eh wenig.

Re: apache2 und cflags

Posted: 2007-01-26 18:27
by daemotron
Statt `-march=opteron` mal `-march=k8 -mtune=k8` ausprobieren... Zumindest mit nem 3.4er gcc und `CHOST="i686-pc-linux-gnu"`funktioniert das recht unproblematisch...

Code: Select all

CHOST="i686-pc-linux-gnu"
LDFLAGS="-Wl,-O1"
CFLAGS="-O2 -pipe -march=k8 -mtune=k8 -momit-leaf-frame-pointer -fomit-frame-pointer -fforce-addr -ftracer"
CXXFLAGS="-O2 -pipe -march=k8 -mtune=k8 -momit-leaf-frame-pointer -fomit-frame-pointer -fforce-addr -ftracer -fvisibility-inlines-hidden"

Re: apache2 und cflags

Posted: 2007-01-26 18:49
by oxygen
-march=k8 -mtune=k8 ist Unfug. In dieser Konstellation hat -mtune keinerlei Wirkung.
Die anderen Optimerungen die erwähnst im übrigen auch, da entweder problematisch oder bereits durch -O2 aktiviert.

Re: apache2 und cflags

Posted: 2007-01-28 08:54
by daemotron
Ich lass mich da gern eines besseren belehren... hab einfach nur die Flags übernommen, die in Joe Users HowTo angegeben waren und auf den von mir verwendeten CPU-Typ angepasst (Athlon 64 X2). Hab auch grade gesehen, dass der entsprechende Abschnitt im Gentoo-Handbuch ebenfalls überarbeitet wurde (und auf das Thema leider gar nicht mehr eingeht...)

Re: apache2 und cflags

Posted: 2007-01-28 11:04
by Joe User
Weshalb ich die Flags explizit setze, habe ich bereits erläutert, siehe Archiv...

Re: apache2 und cflags

Posted: 2007-01-28 13:35
by oxygen
Ja mir ist schon klar warum.
Für den Fall das -march / -O2 ausgefiltert wird. Kann hier ja aber nicht passieren. Wie gesagt, in dieser Konstellation ist es Unfug.