错误:安装CocoaPods时出错:错误:无法构建本地扩展宝石。

314

我正在尝试在运行OSX 10.9.1(新的Mavericks)的MacBook Pro上安装CocoaPods,但在输入gem install cocoapods后,我遇到了以下错误:

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

        "/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby" -rubygems /usr/local/rvm/gems/ruby-1.9.3-p194/gems/rake-10.1.1/bin/rake RUBYARCHDIR=/Users/rangreenberg/gems/gems/xcodeproj-0.14.1/ext RUBYLIBDIR=/Users/rangreenberg/gems/gems/xcodeproj-0.14.1/ext
/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
checking for -std=c99 option to compiler... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:491:in `block in try_compile'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:443:in `with_werror'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:491:in `try_compile'
    from extconf.rb:24:in `block in <main>'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from extconf.rb:23:in `<main>'
rake aborted!
Command failed with status (1): [/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/...]

Tasks: TOP => default => ext
(See full trace by running task with --trace)


Gem files will remain installed in /Users/rangreenberg/gems/gems/xcodeproj-0.14.1 for inspection.
Results logged to /Users/rangreenberg/gems/gems/xcodeproj-0.14.1/ext/xcodeproj/gem_make.out

`Try to switch ruby to homebrew version.brew install ruby brew link --overwrite rubyIf you need to have ruby first in your PATH run: echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profileFor compilers to find ruby you may need to set: export LDFLAGS="-L/usr/local/opt/ruby/lib" export CPPFLAGS="-I/usr/local/opt/ruby/include"For pkg-config to find ruby you may need to set: export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"` - Muhammad Areeb
40个回答

573

执行以下命令

 brew cleanup -d -v 

然后运行以下命令

brew install cocoapods 

注意:如果出现连接失败的情况,请运行 brew link cocoapods

如果链接失败,请运行

brew link --overwrite cocoapods

这是我解决问题的方法

对于使用 m1 芯片系统的人,他们需要通过 Rosetta 运行此操作

选择终端并按下 cmd(⌘)+I,然后选中“通过 Rosetta 打开”选项(针对基于 m1 芯片的 Mac)


8
是的。尝试了一个小时使用 rvm 和 gem 更新东西,尝试使用 brew 很顺利解决了问题。谢谢! - Victor G
27
在使用"brew link cocoapods"修复链接错误后,我遇到了另一个错误"Could not symlink bin/pod"。我通过运行"brew link --overwrite cocoapods"来解决符号链接错误。 - Karen Chang
1
如果 "brew link cocoapods" 失败,请使用:brew link --overwrite cocoapods。 - Eugene Pinchuk
如果您遇到了一些问题或权限不足的错误,您需要执行一些命令。我发现了这个网站,解决了我的问题:https://stdworkflow.com/386/mac-error-running-homebrew-as-root-is-extremely-dangerous-and-no-longer-supported - Eduardo Mior
最后使用 brew link --overwrite cocoapods 命令对我来说是有效的。 - Ori
显示剩余6条评论

144

首先,检查你正在使用的 Ruby 版本。

$ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18]
$ which ruby
usr/bin/ruby

现在使用 Homebrew 安装最新版本的 Ruby。

$ brew install ruby
==> ruby
By default, binaries installed by gem will be placed into:
/usr/local/lib/ruby/gems/2.7.0/bin

You may want to add this to your PATH.

ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

如果您需要将 Ruby 放在 PATH 中的第一位,请运行:

$ echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> /Users/xxx/.bash_profile

为了让编译器找到Ruby,您可能需要设置:

$ export LDFLAGS="-L/usr/local/opt/ruby/lib"
$ export CPPFLAGS="-I/usr/local/opt/ruby/include"

按照说明设置 PATH。现在你将会看到已安装的 Ruby。确保替换 'xxx' 为你的用户名。

$ echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> /Users/xxx/.bash_profile
$ echo 'export LDFLAGS="-L/usr/local/opt/ruby/lib"' >> ~/.bash_profile
$ echo 'export CPPFLAGS="-I/usr/local/opt/ruby/include"' >> ~/.bash_profile

$ source ~/.bash_profile

最后,确保你的PATH已经设置好。

$ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18]
$ which ruby
/usr/local/opt/ruby/bin/ruby

你已经准备就绪了!确保按以下方式指定安装位置来保存。

$ sudo gem install -n /usr/local/bin cocoapods

9
神祝福你,我的朋友。我已经搜索了一个小时。 - Hom Bahrani
9
适用于我的MacOS Catalina 10.15.7。非常感谢! - Ulysses Alves
3
对我也有帮助,MacOS Big Sur 11.0.1。非常感谢,兄弟你救了我。我搜索了很久大约4个小时。你救了我,再次感谢。 - manoj kashyap
2
你是所有时代的英雄。 - Mohad Hadi
2
谢谢兄弟,致敬。 - Bandish Dave
显示剩余10条评论

75

您需要安装Xcode的开发者工具。最简单的方法是通过终端进行操作(这个问题)。

xcode-select --install

1
当我输入您的建议时,我收到“无法安装软件,因为当前无法从软件更新服务器获取。” :/ - gran33
请尝试开发者网站上的另一个选项。 - Kevin
1
已经尝试过了,问题依旧,无法获取命令行工具,请参考此链接:https://discussions.apple.com/message/23822686#23822686 - gran33
3
您可以从 https://developer.apple.com/downloads/index.action 手动下载命令行工具。 - Chen
1
你能告诉我们为什么需要这个吗?你是如何想到的? - mfaani
显示剩余5条评论

23

如果您也看到错误:活动开发者路径..不存在,您可能还需要执行以下操作

$ sudo xcode-select --reset

2
尝试了很多方法,手动设置了xode命令行工具,更新了Ruby,更新了macOS,但都没有起作用。但是这个简单的命令解决了问题。非常感谢。 - Akash Bhardwaj
2
我已经尝试了100种其他方法,但都没有用,只有这个完美地运作了。 - Shehbaz Khan

22
如果以上方法都不起作用,请按照以下步骤操作:
  1. sudo xcode-select --switch /Library/Developer/CommandLineTools
  2. sudo gem install cocoapods

如果您遇到类似以下错误

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /usr/bin directory

那么进入第3步:

  1. $ sudo gem install -n /usr/local/bin cocoapods

2
谢谢!我已经尝试了几个小时。我只需要在我的应用程序中添加广告,就可以完成了,但我做不到!所以非常感谢你,非常非常感谢你。 - Lucas Dahl
嗨,@LucasDahl,非常感谢您的关注和支持,并为迟迟未能回复而道歉。 - Aklesh Rathaur
没问题,我理解! - Lucas Dahl

19
brew reinstall ruby
将以下内容添加到您的路径中
export PATH="/usr/local/opt/ruby/bin:$PATH"

如果需要的话,请添加这些标志。

export LDFLAGS="-L/usr/local/opt/ruby/lib"
export CPPFLAGS="-I/usr/local/opt/ruby/include"

18

请先更新你的 gem 工具。这可能需要一段时间。

sudo gem update --system

使用这个代替

sudo gem install -n /usr/local/bin cocoapods -v 1.8.4

最新的CocoaPods 1.10.0无法使用。

您可以使用以下命令验证版本:

pod --version

最新版本的CocoaPods为什么不工作?有任何想法吗? - Akash Raghani

12

错误:安装Cocoapods出错:错误:构建原生扩展宝石失败

首先安装Ruby版本管理器RVM:

curl -L https://get.rvm.io | bash -s stable

然后使用

source ~/.rvm/scripts/rvm 

然后安装最新版本的Ruby:

rvm install ruby-2.7.2

接下来,请按照终端输出的内容进行以下步骤:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/nec/.zprofile 

然后使用

eval "$(/opt/homebrew/bin/brew shellenv)"

最后再次尝试安装CocoaPods:

sudo gem install cocoapods

我使用上述命令解决了这个问题。 - Jamirul islam
你能澄清一下 /Users/nec/.zprofile 目录吗?我想这只是我们使用的任何bash配置文件,对吗?我为了保险起见将eval命令添加到了我的 .bashrc 和 .zprofile 中,但我不熟悉 .zprofile,所以不确定在两者中都有必要吗? - Jonny Asmar
.zprofile文件路径显示您的终端输出。 - Jamirul islam

9

我通过使用Ruby 2.0或更高版本(这是Mavericks上的首选方式)来解决了问题。如果您正在使用rvm,请使用以下命令切换到正确的ruby版本:

rvm use ruby-2.0

之后,gem install cocoapods 正常工作了。更具体地说,我使用的是:

OSX 10.9.2
ruby-2.0.0-p353
cocoapods-0.32.1

8

这个命令救了我的一天

sudo gem install -n /usr/local/bin cocoapods -v 1.8.4

需要确认检查Pod版本

pod --version

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接