Я никогда раньше не использовал команду ARCHFLAGS и у меня над головой.
Я борюсь за то, чтобы гем MySQL работал на 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 игнорирует мою команду ARCHFLAGS. Есть идеи, почему это будет? Как я уже сказал, я немного разбираюсь в этом: P
Большое спасибо всем! - Кевин