J'essaye de compiler mod_auth_kerb pour apache sur mac os x 10.5.7. Je n'obtiens aucune erreur de compilation, mais quand apache essaie de le charger:Comment compiler un module Apache 32 bits pour une plate-forme 64 bits?
org.apache.httpd [95092]: httpd: Erreur de syntaxe sur la ligne 160 de /private/etc/apache2/httpd.conf: Impossible de charger/usr /libexec/apache2/mod_auth_kerb.so dans le serveur: dlopen (/usr/libexec/apache2/mod_auth_kerb.so, 10): aucune image appropriée trouvée. Vous ne trouvez: \ n \ t/usr/libexec/apache2/mod_auth_kerb.so: mach-o, mais l'architecture mal
J'ai essayé ce qui suit dans le fichier makefile:
ARCHFLAGS = '- arc ppc64' CPPFLAGS = -I. -Ispnegokrb5 $ (KRB5_CPPFLAGS) $ (DEFS) -mpowerpc64 -mcpu = G5 -mtune = G5 -arch ppc64 LDFLAGS = $ (KRB5_LDFLAGS) $ (LIB_resolv) -mpowerpc64 -mcpu = G5 -mtune = G5 -arch ppc64 CFLAGS = -mpowerpc64 -mcpu = G5 -mtune = G5 -arch ppc64
J'ai regardé dans ces discussions:
http://lists.apple.com/archives/unix-porting/2008/Mar/msg00061.html
http://objectmix.com/apache/690208-re-mod_auth_kerb-mac-os-x-10-5-client.html
J'ai aussi changé cette dans la source:
de krb5_rc_resolve_full
à __KerberosInternal_krb5_rc_resolve_full
Je ne peux pas apache pour le charger et il prétend qu'il est l'architecture erronée. Je pense que Apache est 64 bits à partir de la base dans cette version du serveur Mac, donc c'est probablement le problème. Je ne sais tout simplement pas comment m'en sortir.
La ligne 160 est un reflet rouge dans le fichier httpd.conf (il contient ##). Je ne sais pas comment compiler correctement et j'espérais de l'aide.
J'ai un PPC G5 64.
Merci.
EDIT:
Ce qui est étrange est le suivant:
otool -hv mod_auth_kerb.so mod_auth_kerb.so: en-tête Mach caps magiques cputype de cpusubtype filetype drapeaux de ncmds
MH_MAGIC_64 PPC64 0x00 PAQUET 10 1328 NOUNDEFS DYLDLINK TWOLEVEL
Je ne sais pas ce qui ne va pas.
Je suis sur le PPC64 et c'est comme ça que j'ai compilé.
Je ne vous suis pas. Si je suis sur le PPC, pourquoi ai-je besoin du compilateur croisé pour compiler x86_64? Aussi, pourquoi ne me donnerait-il pas d'erreurs avec -arch ppc64 si ce n'était pas "correct"? Juste essayer de comprendre, ne pas remettre en question votre sagesse. Merci – johnny
@Johnny votre code source compilera bien, car il est correct, mais l'objet résultant ne sera pas de l'architecture correcte, c'est-à-dire, il ne contiendra pas le bon code machine. Le format d'objet ELF/Mac est neutre en termes d'architecture, ce qui signifie que les en-têtes indiquent que l'objet n'est pas la bonne architecture et ne tente pas de l'exécuter. Lisez un peu sur la compilation croisée et les architectures et vous comprendrez pourquoi. –
En outre, si vous compilez le module à partir de la source, le script configure fourni détermine généralement l'arche correcte (par exemple, 32 ou 64 bits, etc.). –