2010-10-15 4 views
0

J'essaie de configurer un environnement de développement sur mon Macbook Pro vieillissant qui correspond à mon environnement de production Linux EC2. Je suis sur le tronçon de la maison maintenant, besoin seulement d'obtenir le plugin mod_auth_mysql pour apache de travail. Après quelques heures de googling, de patch et de grattage de la tête, je pense que je suis presque là, mais j'ai frappé quelque chose que rien de ce que j'ai trouvé en ligne n'a été capable de résoudre.apxs sur MacOSX ayant des problèmes avec l'architecture

[email protected]:/usr/local/mod_auth_mysql-2.9.0$ sudo apxs -c -L/usr/local/mysql/lib -I/usr/local/mysql/include/ -lmysqlclient -lm -lz mod_auth_mysql.c 
/usr/share/apr-1/build-1/libtool --silent --mode=compile gcc -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK -I/usr/local/include -I/usr/include/apache2 -I/usr/include/apr-1 -I/usr/include/apr-1 -I/usr/local/mysql/include/ -c -o mod_auth_mysql.lo mod_auth_mysql.c && touch mod_auth_mysql.slo 
/usr/share/apr-1/build-1/libtool --silent --mode=link gcc -o mod_auth_mysql.la -L/usr/local/mysql/lib -lmysqlclient -lm -lz -rpath /usr/libexec/apache2 -module -avoid-version mod_auth_mysql.lo 
ld: warning: in /usr/local/mysql/lib/libmysqlclient.dylib, file is not of required architecture 
ld: warning: in /usr/local/mysql/lib/libz.a, file is not of required architecture 
warning: no debug symbols in executable (-arch x86_64) 

Je pense que cela se plaint parce qu'il essaie de construire pour 64 bits, mais je suis sur une plate-forme 32 bits? Je ne suis pas entièrement sûr. J'ai essayé de forcer une construction de 32 bits avec env ARCHFLAGS et -D arch sur apxs, en vain. FWIW, j'ai également essayé mod_auth_mysql-3.0.0, et frappé plus ou moins le même résultat.

Alternativement, y a-t-il une manière plus moderne d'authentifier mysql dans Apache? Je n'ai rien trouvé d'autre, mais ce module n'a pas eu d'amour depuis 5 bonnes années, et j'ai dû appliquer quelques patchs que j'ai trouvés éparpillés sur le net pour arriver jusque là.

Répondre

1

D'abord, vérifier quelles architectures vos bibliothèques prennent en charge avec file /usr/local/mysql/lib/libmysqlclient.dylib, etc. Une fois que vous savez, je pense que vous pouvez contrôler ce que apxs construit pour en ajoutant des drapeaux comme -Wc,"-arch i386" -Wl,"-arch i386"

+1

Great! cela m'a fait un pas de plus, maintenant j'ai un avertissement: "avertissement: pas de symboles de débogage dans l'exécutable (-arch i386)", et pas de .so dans le répertoire de construction. J'ai également vérifié dans le libexec/apache pour un mod_auth_mysql (pas sûr si apxs est supposé le vider automatiquement là), et aucun dés. – roguenet

+2

Ok, l'ajout de -g aux drapeaux du compilateur a supprimé l'avertissement, mais n'a pas généré le fichier .so. J'ai lu un peu plus dans la page de manuel apxs, et j'ai découvert que la commande que j'exécute n'est pas complète, vous devez lancer apxs -i -a mod_name.la pour finir. Donc, avec ça ça marche. Merci! – roguenet

+0

Une note de plus pour quiconque a ce problème et atterrit ici: Il s'avère que même si je cours sur un processeur i386, l'apache qui est intégré est x86_64, avec tous ses modules. Donc, après avoir fait tout cela pour le faire fonctionner, le module ne se chargerait pas. J'ai fini par installer la version x86_64 de mysql, en reconstruisant mod_auth_mysql sans le "-auth i386", et tout a fonctionné. – roguenet

Questions connexes