2009-07-17 6 views
0

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

Répondre

1

Si je suis correctement à la question, je pense vous devez construire/installer une chaîne d'outils de compilation croisée pour le construire de PPC à x86_64 ou d'une autre architecture non-PPC, ou même, dans certains cas, PPC à PPC64 et vice versa.

Je ne conseillerais pas cela si vous n'êtes pas familier avec GCC, la chaîne d'outils Unix et les éléments de base de Darwin en général.

Vous pourriez être en mesure de trouver des configurations de chaîne d'outils Darwin sur le web. Quelques liens dans la bonne direction:

  1. http://lists.apple.com/archives/darwin-development/2002/Dec/msg00062.html
  2. http://ranger.befunk.com/fink/darwin-cross/
  3. http://myownlittleworld.com/miscellaneous/computers/darwin-cross-distcc.html
  4. http://www.google.com/search?q=Darwin+cross+compilation
+0

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

+0

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

+0

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

Questions connexes