"gem install mysql" failing horribly on OS X leaopard


D

Doug Livesey

Hi -- I'm having trouble getting the mysql gem to install on an OS X
Leopard machine.
Typical output I get from the console is this:

<CONSOLE>
esft 523 $ sudo env ARCHFLAGS="-arch i386" gem install mysql --
--with-mysql-include=/usr/local/mysql/include
--with-mysql-lib=/usr/local/mysql/lib
Password:
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/usr/local/bin/ruby extconf.rb install mysql --
--with-mysql-include=/usr/local/mysql/include
--with-mysql-lib=/usr/local/mysql/lib
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... no
checking for mysql_query() in -lmysqlclient... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-mysql-config
--without-mysql-config
--with-mysql-dir
--without-mysql-dir
--with-mysql-include=${mysql-dir}/include
--with-mysql-lib=${mysql-dir}/lib
--with-mysqlclientlib
--without-mysqlclientlib
--with-mlib
--without-mlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-zlib
--without-zlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-socketlib
--without-socketlib
--with-mysqlclientlib
--without-mysqlclientlib
--with-nsllib
--without-nsllib
--with-mysqlclientlib
--without-mysqlclientlib


Gem files will remain installed in
/usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to
/usr/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out

</CONSOLE>

And when I look in the mkmf.log file, at the end of a very long series
of entries, I see this:

<LOG>
"gcc -o conftest -I. -I/usr/local/lib/ruby/1.8/universal-darwin8.0 -I.
-I/usr/local/mysql/include -I/usr/local/include -g -O2 -fno-common
-pipe -fno-common conftest.c -L"/usr/local/lib"
-L"/usr/local/mysql/lib" -L"/usr/local/lib" -L"/usr/local/lib/mysql"
-arch i386 -lz -lm -lruby-static -lmysqlclient -lz -lm -lpthread -ldl
-lobjc "
ld: warning in /usr/local/mysql/lib/libmysqlclient.dylib, file is not of
required architecture
Undefined symbols:
"_mysql_query", referenced from:
_t in ccxGmlzF.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: /*top*/
2: int main() { return 0; }
3: int t() { mysql_query(); return 0; }
/* end */

--------------------
</LOG>

Can anyone offer me any advice on getting this to work?
Cheers,
Doug.
 
Ad

Advertisements

K

Kem Mason

Frederick said:
This appears to be the key bit: you're asking for an i386 executable
but that library is apparently a different architecture (lipo -
detailed_info /usr/local/mysql/lib/libmysqlclient.dylib will tell you
what it is)

Fred

I did this, and my libmysqlclient.dylib was i386 -- but I noticed the
compiler commands were:

gcc -I. -I.
-I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0
-I. -DHAVE_MYSQL_H -I/usr/local/mysql/include -Os -arch i386
-fno-common -fno-common -arch ppc -arch i386 -Os -pipe -fno-common -c
mysql.c
cc -arch ppc -arch i386 -pipe -bundle -undefined dynamic_lookup -o
mysql.bundle mysql.o -L"."
-L"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib" -L.
-arch ppc -arch i386 -lruby -L/usr/local/mysql/lib -lmysqlclient -lz
-lm -lpthread -ldl -lm
#output:
ld warning: in /usr/local/mysql/lib/libmysqlclient.dylib, file is not of
required architecture

I copy / pasted the commands stripping out all the '-arch ppc'
instances, and everything worked great for me after that.
 
Ad

Advertisements

S

Santhoshkumar Muniraj

Can you try the following command.

sudo env ARCHFLAGS='-arch i386' gem install mysql -v=2.7 --
--with-mysql-config=/usr/local/mysql/bin/mysql_config
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top