Установка Ruby 1.9.3 не работает из-за лязга

Я пытаюсь установить Ruby 1.9.3 с помощью clang. Я пробовал следующее, и это не сработало:

rvm install 1.9.3-p125 --with-gcc=clang

rvm install 1.9.3 --with-gcc=clang --with-readline-dir=$rvm_path/usr

Ошибка, которую я получаю, связана с ошибкой readline в журнале make:

readline.c:1499:9: error: use of undeclared identifier 'username_completion_function'; did you mean 'rl_username_completion_function'?
                                    rl_username_completion_function);
                                    ^
readline.c:69:42: note: expanded from macro 'rl_username_completion_function'
# define rl_username_completion_function username_completion_function
                                         ^
/usr/local/include/readline/readline.h:443:14: note: 'rl_username_completion_function' declared here
extern char *rl_username_completion_function PARAMS((const char *, int));
             ^
1 error generated.
make[2]: *** [readline.o] Error 1
make[1]: *** [ext/readline/all] Error 2
make: *** [build-ext] Error 2

а также эта ошибка clang для первой попытки: (rvm install 1.9.3-p125 --with-gcc=clang)

clang: error: unsupported option '--with-libyaml'
clang: error: unsupported option '--with-libyaml'

и для второй попытки: (rvm install 1.9.3 --with-gcc=clang --with-readline-dir=$rvm_path/usr)

clang: error: unsupported option '--with-readline'
clang: error: unsupported option '--with-opt-dir=/Users/andrewjl/.rvm/usr'
clang: error: unsupported option '--with-readline'
clang: error: unsupported option '--with-opt-dir=/Users/andrewjl/.rvm/usr'

Учитывая то, что я узнал здесь, я предполагаю, что clang не распознает мои аргументы командной строки для использования определенного gcc и/или определенного каталога readline.

Мой RVM: rvm 1.14.3 (master)

Мой Кланг:

Apple clang version 3.1 (tags/Apple/clang-318.0.61) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.0
Thread model: posix

Вот мой GCC:

andrewjl$ /usr/bin/gcc -v
Using built-in specs.
Target: i686-apple-darwin11
Configured with: /private/var/tmp/llvmgcc42/llvmgcc42-2336.9~22/src/configure --disable-checking --enable-werror --prefix=/Applications/Xcode.app/Contents/Developer/usr/llvm-gcc-4.2 --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-prefix=llvm- --program-transform-name=/^[cg][^.-]*$/s/$/-4.2/ --with-slibdir=/usr/lib --build=i686-apple-darwin11 --enable-llvm=/private/var/tmp/llvmgcc42/llvmgcc42-2336.9~22/dst-llvmCore/Developer/usr/local --program-prefix=i686-apple-darwin11- --host=x86_64-apple-darwin11 --target=i686-apple-darwin11 --with-gxx-include-dir=/usr/include/c++/4.2.1
Thread model: posix
gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)

Я попробовал метод здесь а мне не помогло. В частности, я установил Xcode 4.1 с инструментами командной строки и обязательно обновил openssl и readline. Кто-нибудь знает что-нибудь еще, что я могу попробовать?


person Andrew Lauer Barinov    schedule 28.06.2012    source источник
comment
возможный дубликат Установка Ruby 1.9.3 Проблемы с Clang - Поддержка Ruby Clang ограничена, и ее следует избегать!   -  person mpapis    schedule 29.06.2012
comment
Хорошо, могу я пойти с gcc 4.2? Я считаю, что это то, что я использовал ранее, и это работало хорошо. Я пытаюсь использовать gcc, который поставляется с Xcode 4.3 CL, чтобы установить Ruby, и у меня возникают проблемы с его поиском/настройкой во время процесса установки rvm.   -  person Andrew Lauer Barinov    schedule 29.06.2012


Ответы (2)


Ваш «GCC» по-прежнему основан на LLVM. При установке ruby-1.9.3-p125 вам не нужно и, вероятно, вообще не следует устанавливать --with-gcc=clang, так как RVM автоматически это вычислит.

Вы уже пытались установить этот рубин без этой опции? Если у вас все еще есть проблемы, сообщите мне, какую именно версию Xcode вы установили, и мы можем продолжить. gcc версии 4.2.1 может быть от 4.2.x до 4.5 DP2. Подумайте о том, чтобы зайти на #rvm в Freenode IRC (http://webchat.freenode.net/?channels=rvm), и я (Remear) или mpapis могу вам помочь.

Немного уточняющей информации:

Все версии Xcode примерно до 4.1 поставлялись со стандартным компилятором на основе GCC. Начиная с Xcode 4.2.x, Apple представила компилятор на основе LLVM и начала поэтапный отказ от компилятора на основе GCC. Xcode 4.3 поставляется только с компилятором LLVM, без GCC. Ruby 1.8.x требует GCC для компиляции. В Ruby 1.9.3-p0 была небольшая поддержка LLVM, но вам повезло, что вы ее установили. Ruby 1.9.3-p125 или новее имеет улучшенную совместимость с компилятором LLVM.

Итак, вот разбивка того, что вам нужно для установки практически любого ruby:

Руби 1.8.x, Руби 1.9.3-p0

Xcode 4.1 или установщик osx-gcc

Руби 1.9.3-p125 или новее

Xcode 4.1 или установщик osx-gcc

or

Xcode 4.2.x или новее с установленными инструментами командной строки Xcode (это возвращает вам GCC в дополнение к LLVM)

person Remear    schedule 28.06.2012
comment
Эй, спасибо за ответ. Я хотел бы использовать 3-й метод (сейчас установлены Xcode 4.3.3 плюс инструменты CL), все еще получая ошибки при запуске простого старого rvm install 1.9.3. Я andrewjl88 в IRC, пинговал вас ранее, так что можете ответить в любое время. Еще раз спасибо. - person Andrew Lauer Barinov; 29.06.2012
comment
Прости, что я скучал по тебе. Я чаще бываю ночью по MST, но постараюсь оставить хотя бы одну машину включенной для сообщений. Напиши мне, когда будешь рядом, и продолжай, пока мы не свяжемся. - person Remear; 03.07.2012
comment
Не беспокойтесь, я на самом деле все исправил сам. Оказывается, синтаксис командной строки изменился, и это меня сбило с толку. Служит мне правильно для не RTFM :) - person Andrew Lauer Barinov; 03.07.2012

Похоже, что RVM изменил что-то в командной строке, у меня работает следующий (измененный) формат:

rvm pkg install readline

с последующим:

rvm install 1.9.3 -C "--with-readline-dir=$HOME/.rvm/usr"
person Andrew Lauer Barinov    schedule 29.06.2012
comment
Я связался с mpapis, текущим сопровождающим RVM, и он сказал, что для этого не нужен -C. Если это действительно так, то это ошибка. Если вам не удалось заставить его работать без -C, сообщите о проблеме на github.com/ wayneeseguin/rvm/issues, чтобы он мог разобраться в этом. - person Remear; 04.07.2012