I'm trying to set up my RubyOnRails development enviroment with MySQL. I have XAMPP installed, so I decided to use the XAMPP's MySQL installation, (therefore I installed the XAMPP dev package).
Now I'm trying to install the mysql2 gem but I got this error:
gem install mysql2 --version 0.2.7 -- --with-mysql-dir=/Applications/XAMPP/xamppfiles/ --with-mysql-lib=/Applications/XAMPP/xamppfiles/lib/mysql/ –with-mysql-include=/Applications/XAMPP/xamppfiles/include/mysql/ --with-mysql-config=/Applications/XAMPP/xamppfiles/bin/mysql_config
Error loading RubyGems plugin "/Library/Ruby/Gems/1.8/gems/yard-0.6.3/lib/rubygems_plugin.rb": undefined method `overwrite_accessor' for Gem::Specification:Class (NoMethodError)
Building native extensions. This could take a while...
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
/System/Library/Fram开发者_运维问答eworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb --with-mysql-dir=/Applications/XAMPP/xamppfiles/ --with-mysql-lib=/Applications/XAMPP/xamppfiles/lib/mysql/ –with-mysql-include=/Applications/XAMPP/xamppfiles/include/mysql/ --with-mysql-config=/Applications/XAMPP/xamppfiles/bin/mysql_config
checking for rb_thread_blocking_region()... no
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
creating Makefile
make
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/XAMPP/xamppfiles/include/mysql -I/Applications/XAMPP/xamppfiles/include -L/Applications/XAMPP/xamppfiles/lib -mmacosx-version-min=10.4 -arch i386 -arch ppc -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -Wall -funroll-loops -c client.c
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/XAMPP/xamppfiles/include/mysql -I/Applications/XAMPP/xamppfiles/include -L/Applications/XAMPP/xamppfiles/lib -mmacosx-version-min=10.4 -arch i386 -arch ppc -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -Wall -funroll-loops -c mysql2_ext.c
./client.h:20: warning: ‘rb_thread_blocking_region’ defined but not used
./client.h:20: warning: ‘rb_thread_blocking_region’ defined but not used
./client.h:20: warning: ‘rb_thread_blocking_region’ defined but not used
gcc -I. -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin10.0 -I. -DHAVE_MYSQL_H -DHAVE_ERRMSG_H -DHAVE_MYSQLD_ERROR_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/XAMPP/xamppfiles/include/mysql -I/Applications/XAMPP/xamppfiles/include -L/Applications/XAMPP/xamppfiles/lib -mmacosx-version-min=10.4 -arch i386 -arch ppc -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -Wall -funroll-loops -c result.c
cc -arch x86_64 -pipe -bundle -undefined dynamic_lookup -o mysql2.bundle client.o mysql2_ext.o result.o -L. -L/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib -L. -arch x86_64 -Wl,-rpath,/Applications/XAMPP/xamppfiles/lib -lruby -L/Applications/XAMPP/xamppfiles/lib -I/Applications/XAMPP/xamppfiles/include -mmacosx-version-min=10.4 -L/Applications/XAMPP/xamppfiles/lib/mysql -lmysqlclient_r -lz -lm -lpthread -ldl
ld: -rpath can only be used when targeting Mac OS X 10.5 or later
collect2: ld returned 1 exit status
make: *** [mysql2.bundle] Error 1
Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql2-0.2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql2-0.2.7/ext/mysql2/gem_make.out
So I think the key point here is:
ld: -rpath can only be used when targeting Mac OS X 10.5 or later
I've tried to set the MACOSX_DEPLOYMENT_TARGET=10.6 but nothing changes.
By the way, I'm using Mac OS X 10.6.6, so the error above doesn't make any sense...
Thank you!
Here are several possibilities you could try.
Try adding
--platform=ruby
to your command. I've seen that people claim it helps.Your command should then be:
gem install mysql2 --platform=ruby --version 0.2.7 -- --with-mysql-dir=/Applications/XAMPP/xamppfiles/ --with-mysql-lib=/Applications/XAMPP/xamppfiles/lib/mysql/ –with-mysql-include=/Applications/XAMPP/xamppfiles/include/mysql/ --with-mysql-config=/Applications/XAMPP/xamppfiles/bin/mysql_config
Make sure you are building for the correct architecture. OSX 10.6.x is very vague about when it uses 32-bit stuff and when it uses 64-bit stuff, at least as far as I can tell.
You need to try building against both 32 and 64 bit versions of MySQL.
The simplest way to do it is to download both of them from http://dev.mysql.com/downloads/mysql/#downloads and try to build against each one.
精彩评论