Je suis incapable de construire le joyau de rubis Couchbase sur os x 10.6.8

voix
0

Mon but est d'installer le bijou rubis Couchbase en construisant les extensions natives, mais je vais avoir ce qui semble être un décalage d'architecture entre la pierre et la bibliothèque libcouchbase C. Voici quelques informations:

  • Je suis en cours d'exécution OS X 10.6.8, en utilisant RVM et rubis 1.9.2-p320 construit à partir des sources
  • Je courais OS X 10.6.7 et Xcode 3.2.5 jusqu'à hier, mais je ne pouvais pas construire libcouchbase nativement
  • Je me suis alors installé brew qui est connu pour aider à soulager la libcouchbase installer et brew m'a dit que je devais passer à au moins Xcode 3.2.6
  • J'ai téléchargé le Xcode insaisissable 4.2 pour Snow Leopard, car il était plus de 2 concerts plus petits que Xcode 3.2.6 et je pensais que j'obtenir la dernière version.
  • Xcode ne pas installer en raison d'erreurs de certificat que j'ai trouvé était le résultat d'un bogue dans le programme d'installation du système et le correctif a été mise à niveau vers OS X 10.6.8, puis appliquer une mise à jour système
  • Quelques heures plus tard et redémarre, je suis en cours d'exécution OS X 10.6.8 avec XCode 4.2 installé et libcouchbase compile par infusion sans accrocs
  • Je tente maintenant d'installer la gemme Couchbase mais la construction d'extensions natives tombe en panne. Il dit qu'il est incapable de trouver libcouchbase même en passant explicitement l'emplacement de la bibliothèque
  • Mkmf.log montre l'inspection suivante ( l' accent gras ajouté, mais je peux me tromper sur le problème!

« /usr/bin/gcc-4.2 -o conftest -I / Utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / include / ruby-1.9.1 / universel darwin10.8.0 -I / Users / emkman / .rvm / rubis / ruby-1.9.2-P320 / include / ruby-1.9.1 / ruby ​​/ arrière -I / Users / emkman / .rvm / rubis / ruby-1.9.2-P320 / include / ruby- 1.9.1 -I. -I / usr / local / Cave / libevent / 2.0.19 / include -I / opt / local / include -I / usr / local / include -I / utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / include -I / usr / include -I / Users / emkman / .rvm / usr / include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -O3 -ggdb -Wextra -Wno-paramètre utilisé -Wno-parenthèses -Wpointer -arith -Wwrite-chaînes -Wno manquantes sur le terrain-Initialiseur -Wshorten-64 à 32 -Wno-long-long -arch i386 -arch x86_64 -fno-common -pipe std = c99 -Wall -Wextra conftest. . -L -L / utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / lib -L / usr / local / Cave / libevent / 2.0.19 / lib -L / opt / local / lib - L / usr / local / lib -L / Users / emkman / .rvm / rubis / ruby-1.9.2-p320 / lib -L / usr / lib -L / Users / emkman / .rvm / usr / lib -L. -arch i386 -ARCH x86_64 -L / usr / local / lib -arch i386 -arch x86_64 -lrub -lpthread y.1.9.1-statique -ldl -lobjc programme contrôlé était:

/* begin */
1: #include ruby.h
2: 
3: int main() {return 0;}
/* end */

« /usr/bin/gcc-4.2 -I / Utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / include / ruby-1.9.1 / -I universel darwin10.8.0 / Utilisateurs / emkman /. RVM / rubis / ruby-1.9.2-P320 / comprennent / ruby-1.9.1 / ruby ​​/ arrière -I / Users / emkman / .rvm / rubis / ruby-1.9.2-P320 / include / ruby-1.9.1 -I. -I / usr / local / Cave / libevent / 2.0.19 / include -I / opt / local / include -I / usr / local / include -I / utilisateurs / emkman / .rvm / rubis / rubis 1,9 .2-P320 / include -I / usr / include -I / Users / emkman / .rvm / usr / include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -O3 -ggdb -Wextra -Wno-paramètre utilisé -Wno-parenthèses -Wpointer-arith - Wwrite-chaînes -Wno manquantes sur le terrain-initializers -Wshorten-64 à 32 -Wno-long-long -arch i386 -arch x86_64 -fno-commune -pipe std = c99 -Wall -Wextra -arch i386 -arch x86_64 -c conftest.c » programme contrôlé était:

/* begin */
 1: #include ruby.h
 2: 
 3:   #include <stdarg.h>
 4:   int foo(int x, ...) {
 5:     va_list va;
 6:     va_start(va, x);
 7:     va_arg(va, int);
 8:     va_arg(va, char *);
 9:     va_arg(va, double);
10:     return 0;
11:   }
12:   int main() {
13:     return foo(10, , 3.14);
14:     return 0;
15:   }
/* end */

have_library: vérification des libcouchbase_server_versions () dans -lcouchbase ... -------------------- pas

« /usr/bin/gcc-4.2 -o conftest -I / Utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / include / ruby-1.9.1 / universel darwin10.8.0 -I / Users / emkman / .rvm / rubis / ruby-1.9.2-P320 / include / ruby-1.9.1 / ruby / arrière -I / Users / emkman / .rvm / rubis / ruby-1.9.2-P320 / include / ruby- 1.9.1 -I. -I / usr / local / Cave / libevent / 2.0.19 / include -I / opt / local / include -I / usr / local / include -I / utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / include -I / usr / include -I / Users / emkman / .rvm / usr / include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -O3 -ggdb -Wextra -Wno-paramètre utilisé -Wno-parenthèses -Wpointer -arith -Wwrite-chaînes -Wno manquantes sur le terrain-Initialiseur -Wshorten-64 à 32 -Wno-long-long -arch i386 -arch x86_64 -fno-common -pipe std = c99 -Wall -Wextra conftest. . -L -L / utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / lib -L / usr / local / Cave / libevent / 2.0.19 / lib -L / opt / local / lib - L / usr / local / lib -L / Users / emkman / .rvm / rubis / ruby-1.9.2-p320 / lib -L / usr / lib -L / Users / emkman / .rvm / usr / lib -L. -arch i386 -ARCH x86_64 -L / usr / local / lib -arch i386 -arch x86_64 -lrub -lcouchbase y.1.9.1-statique -lpthread -ldl -lobjc ld: avertissement: le fichier en ignorant /usr/local/lib/libcouchbase.dylib, le fichier a été construit pour le format de fichier non pris en charge qui n'est pas l'architecture étant liée (i386) symboles non définis pour l' architecture i386: _libcouchbase_server_versions, fait référence à partir de : _t dans cckhpWpO.o ld: symbole (s) trouvé pour ne pas l' architecture i386 collect2: ld retour 1 état sortie lipo: ne peut pas déposer d'entrée ouvert: / var / dossiers / AT / ATO2AJa-G3Ogm + J4qma1hE +++ TI / -Tmp- / mkmf_20120724-40695-16d2a4n / ccAGPue9.out (Aucun fichier ou répertoire) vérifié programme était:

/* begin */
1: #include ruby.h
2: 
3: #include <libcouchbase/couchbase.h>
4: 
5: /*top*/
6: int main() {return 0;}
7: int t() { void ((*volatile p)()); p = (void ((*)()))libcouchbase_server_versions; return 0; }
/* end */

« /usr/bin/gcc-4.2 -o conftest -I / Utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / include / ruby-1.9.1 / universel darwin10.8.0 -I / Users / emkman / .rvm / rubis / ruby-1.9.2-P320 / include / ruby-1.9.1 / ruby ​​/ arrière -I / Users / emkman / .rvm / rubis / ruby-1.9.2-P320 / include / ruby- 1.9.1 -I. -I / usr / local / Cave / libevent / 2.0.19 / include -I / opt / local / include -I / usr / local / include -I / utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / include -I / usr / include -I / Users / emkman / .rvm / usr / include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -O3 -ggdb -Wextra -Wno-paramètre utilisé -Wno-parenthèses -Wpointer -arith -Wwrite-chaînes -Wno manquantes sur le terrain-Initialiseur -Wshorten-64 à 32 -Wno-long-long -arch i386 -arch x86_64 -fno-common -pipe std = c99 -Wall -Wextra conftest. . -L -L / utilisateurs / emkman / .rvm / rubis / ruby-1.9.2-p320 / lib -L / usr / local / Cave / libevent / 2.0.19 / lib -L / opt / local / lib - L / usr / local / lib -L / Users / emkman / .rvm / rubis / ruby-1.9.2-p320 / lib -L / usr / lib -L / Users / emkman / .rvm / usr / lib -L. -arch i386 -ARCH x86_64 -L / usr / local / lib -arch i386 -arch x86_64 -lrub y.1.9.1-statique -lcouchbase -lpthread -ldl -lobjc conftest.c: En fonction 't': conftest.c: 7: Erreur: trop peu d'arguments pour fonctionner de conftest.c 'libcouchbase_server_versions de: En fonction « t « : conftest.c: 7: erreur: trop peu d'arguments pour la fonction 'libcouchbase_server_versions de la lipo: ne peut pas déterminer le type d'architecture de: / var / dossiers / AT / ATO2AJa-G3Ogm + J4qma1hE +++ TI / -Tmp- programme vérifié /mkmf_20120724-40695-cblicr/ccG9E6Cp.out était:

/* begin */
1: #include ruby.h
2: 
3: #include <libcouchbase/couchbase.h>
4: 
5: /*top*/
6: int main() {return 0;}
7: int t() { libcouchbase_server_versions(); return 0; }
/* end */

Donc, il me semble que le problème est que gcc est à la recherche d'une construction i386 de /usr/local/lib/libcouchbase.dylib et inspectant montre des mines

/usr/local/lib/libcouchbase.dylib: Mach-O 64 bits lié dynamiquement x86_64 de bibliothèque partagée

Alors maintenant , à ma question (s). Est - ce le problème ou le hareng rouge? Dois - je être la construction libcouchbase comme i386 ou universel, ou est le problème du côté de la pierre précieuse? Je construis des extensions de pierres précieuses indigènes sur ce système depuis de nombreuses années sans problème, y compris la gemme mysql parfois méchant, mais maintenant j'ai de nouvelles versions de GCC / Xcode. Les notes de version RVM disent que Xcode 4.2 fonctionne uniquement avec Ruby 1.9.3 et casse beaucoup d'extensions natives, donc je le désinstaller complètement, puis installé GCC-10.6.pkg de https://github.com/kennethreitz/osx-gcc- installateur / qui RVM recommande un travail, mais je dois toujours le même problème. Voici ma bière --env basculantes:

CC: / usr / bin / LLVM-gcc => /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2

CXX: / usr / bin / LLVM-g ++ => /usr/llvm-gcc-4.2/bin/llvm-g++-4.2

LD: / usr / bin / LLVM-gcc => /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2

CFLAGS: -SO -w -pipe -march = Core2 -msse4.1 -mmacosx version min = 10,6

CXXFLAGS: -SO -w -pipe -march = Core2 -msse4.1 -mmacosx version min = 10,6

CPPFLAGS: -isystem / usr / local / include

LDFLAGS: -L / usr / local / lib

MACOSX_DEPLOYMENT_TARGET: 10.6

MAKEFLAGS: -j2

Maintenant et quand j'avais Xcode 4.2 installé, mon -march a été mis à Core2 . Si tel est natif à la place? Je rebâti Ruby 1.9.2-p320 de la source, via RVM / JewelryBox après avoir installé mon dernier toolchain osx-gcc, pour assurer qu'il utilisait les mêmes drapeaux. Il est construit comme universel darwin et semble correcte:

interpreter:  ruby
version:      1.9.2p320
date:         2012-04-20
platform:     universal.x86_64-darwin10.8.0
patchlevel:   2012-04-20 revision 35421
full_version: ruby 1.9.2p320 (2012-04-20 revision 35421) [universal.x86_64-darwin10.8.0]

Je sais que cela est beaucoup d'informations, mais je veux juste être complet avec les détails et montrer que je l' ai essayé presque tout. Je dois aussi mentionner que j'ai essayé la version développeur de la gemme associée à l'aperçu du développeur de libcouchbase, et l'erreur est la même. Les deux choses que je ne l' ai pas essayé:

  1. Installation XCode 4.1 pour Snow Leopard - Apple ne fait plus ce fichier disponible pour le téléchargement, même si elle est théoriquement pris en charge.
  2. Installation Xcode 3.2.6 pour Snow Leopard - je tentais d'éviter le téléchargement de 4gb mais je viens de commencer maintenant et puis essayer plus tard ce soir

Toute aide est grandement appréciée, surtout si vous avez construit le joyau de Couchbase sur OS X avant.

Créé 24/07/2012 à 20:37
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
1

Je pense que cela est une bonne question, car je me souviens en passant par des douleurs similaires essayant de construire la pierre précieuse moi-même. Quoi qu'il en était il y a un moment et je n'ai pas les fichiers etc à portée de main de se rappeler ce que je faisais ou si mes erreurs ressemblaient à la vôtre.

Je sais que ce n'est pas aussi bon comme une réponse directe, mais je pense que vous devriez être en mesure d'entrer en contact avec l'auteur de pierres précieuses ici: https://groups.google.com/forum/#!forum/couchbase ou via @avsej sur Gazouillement.

Créé 07/08/2012 à 20:49
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more