J'ai installé Ruby/Gem/Rails sur deux machines OSX 10.8.2 différentes. L'un fonctionne bien et l'autre semble fonctionner jusqu'à ce que je tente d'installer une gemme qui inclut du code natif comme pg. Quand je faisRVM installation de Ruby pour i386 au lieu de x86_64 sous OSX 10.8.2
gem install pg -v 0.12.2
il échoue avec un « Vous ne trouvez pas la bibliothèque cliente PostgeSQL (libpq)
Si je regarde mkmf.log je vois.
have_library: checking for PQconnectdb() in -lpq... -------------------- no "gcc-4.2 -o conftest -I/Users/brian/.rvm/rubies/ruby-1.9.3-p286/include/ruby-1.9.1/i386-darwin12.2.0 -I/Users/brian/.rvm/rubies/ruby-1.9.3-p286/include/ruby-1.9.1/ruby/backward -I/Users/brian/.rvm/rubies/ruby-1.9.3-p286/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/usr/include -I/Users/brian/.rvm/usr/include -fno-common -pipe conftest.c -L. -L/Users/brian/.rvm/rubies/ruby-1.9.3-p286/lib -L. -L/Users/brian/.rvm/usr/lib -L/usr/local/lib -L/usr/lib -lruby.1.9.1 -lpq -lpthread -ldl -lobjc " ld: warning: ignoring file /usr/local/lib/libpq.dylib, file was built for unsupported file format (0xcf 0xfa 0xed 0xfe 0x 7 0x 0 0x 0 0x 1 0x 3 0x 0 0x 0 0x 0 0x 6 0x 0 0x 0 0x 0) which is not the architecture being linked (i386): /usr/local/lib/libpq.dylib Undefined symbols for architecture i386: "_PQconnectdb", referenced from: _t in ccLXteQk.o
Je crois que cela est provoqué parce que la bibliothèque qui est ignorée est une bibliothèque 64 bits (comme je le veux) mais mon installation de ruby est de 32 bits (pour une raison quelconque.) Comme preuve, sur la machine qui fonctionne je vois
~/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/x86_64-darwin12.2.0/ruby/config.h
sur celui qui ne
~/.rvm/rubies/ruby-1.9.3-p194/include/ruby-1.9.1/i386-darwin12.2.0/ruby/config.h
Désolé pour la longue explication. J'ai essayé beaucoup de choses pour essayer de définir l'architecture pour
rvm install 1.9.3
qui produit ces répertoires. Aucun de mes efforts n'a induit la "mauvaise" machine à produire un répertoire d'inclusion en accord avec un binaire 64 bits désiré. Je n'ai pas sciemment défini l'architecture sur l'une ou l'autre de ces versions, ce qui me laisse perplexe à ce stade. Dans l'environnement de la "mauvaise" machine, l'installation de ruby pense qu'elle devrait construire des binaires 32 bits. Des idées?
Que signifie ~/.rvmrc ressemblent à celui qui est défaillant? – echristopherson
Aucune machine ne possédait un fichier .rvmrc mais j'en ai créé un à un moment donné sur la machine défaillante pour tenter de le faire. Bien que cela n'ait pas changé le résultat, ce fichier - que j'ai créé à la main - n'a que cette ligne: rvm_archflags = "- arch x86_64" – Gooberholtzer