apache2 und cflags

Apache, Lighttpd, nginx, Cherokee
bertengel
Posts: 33
Joined: 2006-03-21 22:40

apache2 und cflags

Post by bertengel » 2007-01-26 13:53

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

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: apache2 und cflags

Post by Joe User » 2007-01-26 15:11

Code: Select all

CFLAGS="-march=opteron -O2 -pipe" 
CXXFLAGS="-march=opteron -O2 -pipe" 
./configure --prefix=/usr/local/apache2 
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

bertengel
Posts: 33
Joined: 2006-03-21 22:40

Re: apache2 und cflags

Post by bertengel » 2007-01-26 15:31

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?

Roger Wilco
Administrator
Administrator
Posts: 5924
Joined: 2004-05-23 12:53

Re: apache2 und cflags

Post by Roger Wilco » 2007-01-26 15:46

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.

bertengel
Posts: 33
Joined: 2006-03-21 22:40

Re: apache2 und cflags

Post by bertengel » 2007-01-26 16:00

x86_64-unknown-linux-gnu steht auch ohne --march=opteron ... ich habe ein x86_64 system

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: apache2 und cflags

Post by oxygen » 2007-01-26 17:26

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.

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: apache2 und cflags

Post by daemotron » 2007-01-26 18:27

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"

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: apache2 und cflags

Post by oxygen » 2007-01-26 18:49

-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.

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: apache2 und cflags

Post by daemotron » 2007-01-28 08:54

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...)

User avatar
Joe User
Project Manager
Project Manager
Posts: 11138
Joined: 2003-02-27 01:00
Location: Hamburg

Re: apache2 und cflags

Post by Joe User » 2007-01-28 11:04

Weshalb ich die Flags explizit setze, habe ich bereits erläutert, siehe Archiv...
PayPal.Me/JoeUserFreeBSD Remote Installation
Wings for LifeWings for Life World Run

„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.

oxygen
Posts: 2138
Joined: 2002-12-15 00:10
Location: Bergheim

Re: apache2 und cflags

Post by oxygen » 2007-01-28 13:35

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.