我以前从未使用过ARCHFLAGS命令,现在已经不知所措了。

我正在努力让MySQL gem在Snow Leopard上以64位工作。

我正在做的是此命令:

sudo env ARCHFLAGS='-arch x86_64' gem install --verbose --no-rdoc --no-ri mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config


输出看起来像这样:

.....
make
gcc -I. -I. -I/usr/local/lib/ruby/1.8/universal-darwin8.0 -I. -DHAVE_RB_THREAD_START_TIMER -DHAVE_MYSQL_H  -I/usr/local/mysql/include/mysql -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common -g -O2  -fno-common -pipe -fno-common  -arch i386 -c mysql.c
cc -dynamic -bundle -undefined suppress -flat_namespace -arch i386 -L"/usr/local/lib" -o mysql_api.bundle mysql.o  -lruby -L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lm  -lpthread -ldl -lobjc
ld: warning: in /usr/local/mysql/lib/mysql/libmysqlclient.dylib, file is not of required architecture

make install
/usr/bin/install -c -m 0755 mysql_api.bundle /usr/local/lib/ruby/gems/1.8/gems/mysql-2.8.1/lib
Successfully installed mysql-2.8.1
1 gem installed


我看到的是,即使我告诉我它不是,它也专门指定了-arch i386。紧接着,它给我有关文件不是必需体系结构的警告,因为不是。它是64位。

运行file命令可以得到以下信息:

file /usr/local/mysql/lib/mysql/libmysqlclient.dylib
/usr/local/mysql/lib/mysql/libmysqlclient.dylib: Mach-O 64-bit dynamically linked shared library x86_64


因此,当然这不是必需的体系结构。似乎gem install忽略了我的ARCHFLAGS命令。知道为什么会这样吗?就像我说的那样,我在处理这些问题时不知所措:P

非常感谢! -凯文

最佳答案

这是我所做的:

出口ARCHFLAGS =“-arch x86_64”

sudo gem install --no-rdoc --no-ri mysql -v 2.7---with-mysql-config = / usr / local / mysql / bin / mysql_config

我指定了2.7版本,因为后续版本似乎存在问题。我会尝试使用最新版本,然后先查看它是否有效。

10-05 22:57
查看更多