Подтвердить что ты не робот

Невозможно скомпилировать ruby ​​1.9.3

Когда я запустил

rvm install 1.9.3 --with-gcc=clang

на Mac OSX Lion, ruby ​​не компилируется, и я получаю следующую ошибку в (.rvm/log/ruby-1.9.3-p374/make.log)

[2013-01-29 16:31:05] make
CC = clang
LD = ld
LDSHARED = clang -dynamic -bundle
CFLAGS = -O3 -ggdb -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=shorten-64-to-32 -Werror=implicit-function-declaration  -pipe 
XCFLAGS = -include ruby/config.h -include ruby/missing.h -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/Users/will/.rvm/usr/include -I. -I.ext/include/x86_64-darwin12.2.1 -I./include -I.
DLDFLAGS = -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace  
SOLIBS = 
compiling regparse.c
regparse.c:582:15: error: implicit conversion loses integer precision: 'st_index_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
return t->num_entries;
~~~~~~ ~~~^~~~~~~~~~~
1 error generated.
make: *** [regparse.o] Error 1

Как я могу получить ruby ​​1.9.3 для установки на Lion?

4b9b3361

Ответ 1

вы используете clang, в соответствии с этим билетом http://bugs.ruby-lang.org/issues/5883 - он не полностью поддерживается - вам нужно попробовать использовать gcc-4.2, вы получаете инструкции для доморощенного с запуском rvm requirements.

вот билет RVM для этой проблемы https://github.com/wayneeseguin/rvm/issues/1480

UPDATE: Ruby-2.0.0 действительно лучше компилируется с clang, а затем с gcc-4.2, более подробно здесь: fooobar.com/questions/260894/...

Ответ 2

С Xcode 4.6 я тоже получал эту проблему. Я установил инструменты командной строки, которые сделали gcc доступным в /usr/bin/gcc.

Мне удалось заставить его работать, используя:

rvm install 1.9.3 --with-gcc=gcc

NB. У меня нет доморощенного.

Ответ 3

Если у вас уже нет rvm, требования к rvm не будут работать. Установите gcc 4.2 с помощью homebrew и перезапустите установку rvm. Работал для меня.

brew update
brew tap homebrew/dupes
brew install apple-gcc42

Ответ 4

Если вы используете rbenv и ruby-build вместо rvm, вы должны сделать это:

# this export must be done before every new ruby build
export CC=gcc
# use the version you wish to install
rbenv install 1.9.3-p385

Если это не сработает, вам нужно сначала установить gcc:

brew update
brew tap homebrew/dupes
# install apple-gcc, only once needed
brew install apple-gcc42
# Maybe you have to tell, which gcc version must be used,
# to get it working on newer systems
export CC=gcc-4.2

До тех пор, пока рубины не построят руанскую версию, совместимую с clang, вы должны экспортировать переменную CC перед каждой сборкой новой рубиновой версии

Ответ 5

Я решил это с помощью Macports.

У меня возникли проблемы с компиляцией и были получены ошибки: "Ruby" ruby-1.9.3-p374 был создан с использованием clang - но он не полностью (поддерживается), ожидал ошибок ".

Github также не работал для обслуживания, поэтому я не мог попробовать компилировать с помощью brew, как это было предложено в предыдущем ответе... Это то, что я сделал, и он отлично компилировался на Mountain Lion 10.8.2:

Сначала установите Macports

http://www.macports.org/install.php

Затем запустите:

sudo port selfupdate

sudo port install apple-gcc42

sudo rvm install ruby-1.9.3-p374 --with-gcc = gcc-apple-4.2