Ruby-on-rails 无法构建 gem 本机扩展

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/9552292/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-03 02:57:58  来源:igfitidea点击:

Failed to build gem native extension

ruby-on-railsrubyrubygemsosx-lion

提问by adam

End result is I'm trying to get Ruby on Rails installed on my OS 10.7.3, but having various issues.

最终结果是我试图在我的 OS 10.7.3 上安装 Ruby on Rails,但遇到了各种问题。

Also, I have a freshly installed XCode 4.3 from the App Store.

另外,我有一个来自 App Store 的新安装的 XCode 4.3。

When I fire up the terminal, and enter:

当我启动终端时,输入:

sudo gem install rails

and it writes out:

它写出:

Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/json-1.6.5 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/json-1.6.5/ext/json/ext/parser/gem_make.out

In all of the fixes I'm finding says to install XCode, which I have and runs just fine. However, I did uninstall a previous version of XCode to install the latest version, so I'm wondering if there is any relation there.

在我发现的所有修复程序中,都说要安装 XCode,我拥有并运行得很好。但是,我确实卸载了以前版本的 XCode 来安装最新版本,所以我想知道那里是否有任何关系。

EDIT 1:I've followed Jasdeep suggestion and installed RVM. But once i run:

编辑 1:我按照 Jasdeep 的建议安装了 RVM。但是一旦我运行:

sudo rvm install 1.9.3

I get the following:

我得到以下信息:

Fetching yaml-0.1.4.tar.gz to /Users/xxx/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/xxx/.rvm/src
Configuring yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
Error running ' ./configure --prefix="/Users/xxx/.rvm/usr"  ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/yaml/configure.log
Compiling yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
Error running 'make ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/yaml/make.log


Database file /Users/xxx/.rvm/config/packages does not exist.

gcc-4.2: error trying to exec '/usr/bin/i686-apple-darwin11-gcc-4.2.1': execvp: No such file or directory
Installing Ruby from source to: /Users/xxx/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...

ruby-1.9.3-p0 - #fetching 
ruby-1.9.3-p0 - #downloading ruby-1.9.3-p0, this may take a while depending on your connection...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9330k  100 9330k    0     0   645k      0  0:00:14  0:00:14 --:--:-- 1260k
ruby-1.9.3-p0 - #extracting ruby-1.9.3-p0 to /Users/xxx/.rvm/src/ruby-1.9.3-p0
ruby-1.9.3-p0 - #extracted to /Users/xxx/.rvm/src/ruby-1.9.3-p0
ruby-1.9.3-p0 - #configuring 
Error running ' ./configure --prefix=/Users/xxx/.rvm/rubies/ruby-1.9.3-p0 --enable-shared --disable-install-doc --with-libyaml --with-opt-dir=/Users/xxx/.rvm/usr ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/configure.log
There has been an error while running configure. Halting the installation.

So then I looked up what was in the log file, ..ruby-1.9.3-p0/yaml/configure.log:

然后我查看了日志文件 ..ruby-1.9.3-p0/yaml/configure.log 中的内容:

[2012-03-03 22:49:50]  ./configure --prefix="/Users/xxx/.rvm/usr"  
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... config/install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... no
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/Users/xxx/.rvm/src/yaml-0.1.4':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details

So now it appears the error is:

所以现在看来​​错误是:

no acceptable C compiler found in $PATH

Edit 2:

编辑2:

I've followed matt's instructions and was able to get further once I got the command-line tools installed (since I have Xcode 4.3 now). However, I'm still getting an error:

我已经按照 matt 的说明进行操作,并且在安装了命令行工具后能够更进一步(因为我现在有 Xcode 4.3)。但是,我仍然收到错误消息:

Fetching yaml-0.1.4.tar.gz to /Users/xxx/.rvm/archives
Extracting yaml-0.1.4.tar.gz to /Users/xxx/.rvm/src
Configuring yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
Compiling yaml in /Users/xxx/.rvm/src/yaml-0.1.4.
Installing yaml to /Users/xxx/.rvm/usr
gcc-4.2: error trying to exec '/usr/bin/i686-apple-darwin11-gcc-4.2.1': execvp: No such file or directory
Installing Ruby from source to: /Users/xxx/.rvm/rubies/ruby-1.9.3-p0, this may take a while depending on your cpu(s)...

ruby-1.9.3-p0 - #fetching 
ruby-1.9.3-p0 - #extracted to /Users/xxx/.rvm/src/ruby-1.9.3-p0 (already extracted)
ruby-1.9.3-p0 - #configuring 
Error running ' ./configure --prefix=/Users/xxx/.rvm/rubies/ruby-1.9.3-p0 --enable-shared --disable-install-doc --with-libyaml --with-opt-dir=/Users/xxx/.rvm/usr ', please read /Users/xxx/.rvm/log/ruby-1.9.3-p0/configure.log
There has been an error while running configure. Halting the installation.

Below is the configure.log (sorry this post is getting so long, but hopefully it can help others too):

下面是 configure.log(抱歉这篇文章太长了,但希望它也能帮助其他人):

[2012-03-04 09:29:35]  ./configure --prefix="/Users/xxx/.rvm/usr"  
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... config/install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking whether ln -s works... yes
checking whether make sets $(MAKE)... (cached) yes
checking build system type... x86_64-apple-darwin11.3.0
checking host system type... x86_64-apple-darwin11.3.0
checking for a sed that does not truncate output... /usr/bin/sed
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for fgrep... /usr/bin/grep -F
checking for ld used by gcc... /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld
checking if the linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) is GNU ld... no
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm
checking the name lister (/usr/bin/nm) interface... BSD nm
checking the maximum length of command line arguments... 196608
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld option to reload object files... -r
checking for objdump... no
checking how to recognize dependent libraries... pass_all
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking command to parse /usr/bin/nm output from gcc object... ok
checking for dsymutil... dsymutil
checking for nmedit... nmedit
checking for lipo... lipo
checking for otool... otool
checking for otool64... no
checking for -single_module linker flag... yes
checking for -exported_symbols_list linker flag... yes
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking for objdir... .libs
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC... -fno-common -DPIC
checking if gcc PIC flag -fno-common -DPIC works... yes
checking if gcc static flag -static works... no
checking if gcc supports -c -o file.o... yes
checking if gcc supports -c -o file.o... (cached) yes
checking whether the gcc linker (/usr/llvm-gcc-4.2/libexec/gcc/i686-apple-darwin11/4.2.1/ld) supports shared libraries... yes
checking dynamic linker characteristics... darwin11.3.0 dyld
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for doxygen... false
checking for ANSI C header files... (cached) yes
checking for stdlib.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
configure: creating ./config.status
config.status: creating yaml-0.1.pc
config.status: creating include/Makefile
config.status: creating src/Makefile
config.status: creating Makefile
config.status: creating tests/Makefile
config.status: creating win32/Makefile
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing depfiles commands
config.status: executing libtool commands

回答by matt

The problem is that in Lion Xcode 4.3 doesn't by default install (or even include) the command-line tools such as gcc - and those are what are needed here. In the Downloads pane of Xcode's prefs, under Components, ask for the command-line tools. (See the readme: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Chapters/xcode_4_0.html#//apple_ref/doc/uid/TP40016147-SW35)

问题在于,在 Lion Xcode 4.3 中,默认情况下不安装(甚至不包含)命令行工具,例如 gcc——而这些正是这里所需要的。在 Xcode 首选项的下载窗格中,在组件下,询问命令行工具。(请参阅自述文件:https: //developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/WhatsNewXcode/Chapters/xcode_4_0.html#//apple_ref/doc/uid/TP40016147-SW35

Actually I believe you didn't need to install Xcode at all, since in fact the command-line tool can now be downloaded and installed separately.

其实我相信你根本不需要安装 Xcode,因为事实上命令行工具现在可以单独下载和安装。

回答by Alex Zak

I already had Command-line tools installed (xCode as well)... and still had this (initial) error.

我已经安装了命令行工具(还有 xCode)……但仍然有这个(初始)错误。

The problem was that xCode and the command line tools are no longer installing the gcc compiler. I don't know when they stopped shipping it, but I run mountain lion, and it's not here. So what eventually solved my problem was installing gcc from scratch (https://github.com/kennethreitz/osx-gcc-installer).

问题是 xCode 和命令行工具不再安装 gcc 编译器。我不知道他们什么时候停止运送它,但我运行的是山狮,它不在这里。所以最终解决我的问题是从头开始安装 gcc ( https://github.com/kennethreitz/osx-gcc-installer)。

Keep Smiling :)

保持微笑 :)

回答by timetofly

If someone has the same problem for Ubuntu Linux, the solution was:

如果有人对 Ubuntu Linux 有同样的问题,解决方案是:

sudo apt-get install build-essential
sudo apt-get install libsqlite3-dev