Ruby Gem cài đặt Json không thành công trên Mavericks và Xcode 5.1 - đối số không xác định: '-multiply_definedsuppress'


105

Tôi đã thử chạy gem install json và gặp lỗi sau

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.bundle
clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
make: *** [generator.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /opt/boxen/repo/.bundle/ruby/2.0.0/gems/json-1.8.0 for inspection.
Results logged to /opt/boxen/repo/.bundle/ruby/2.0.0/extensions/universal-darwin-13/2.0.0/json-1.8.0/gem_make.out

Tôi đang sử dụng:

Os X: 10.9.2
Xcode: 5.1 Phiên bản xây dựng 5B130a
Công cụ dòng lệnh (CLT): 5.1.0.0.1.1393561416
Ruby: ruby ​​2.0.0p247 (2013-06-27 phiên bản 41674) [Universal.x86_64-darwin13]
Ruby Gem: 2.2 .2
GCC: 4.2.1 Apple LLVM phiên bản 5.1 (clang-503.0.38) (dựa trên LLVM 3.4svn)


1
Tôi đã làm rất nhiều thứ để giải quyết vấn đề này và tôi không biết chính xác cách nào đã giải quyết được nhưng tôi đã cài đặt phiên bản ruby ​​mới, tải xuống phiên bản trước của Công cụ dòng lệnh (Cuối tháng 10) và thực hiện lệnh @Muncken 's answer (ARCHFLAGS = -Wno-error = used-command-line-parameter-hard-error-in-future {original command}). Điều đó đã giải quyết vấn đề của tôi. Trong trường hợp cụ thể của tôi, tôi đang sử dụng boxen để cài đặt môi trường của mình, vì vậy lệnh cuối cùng tôi sử dụng là ARCHFLAGS = -Wno-error = used-command-line-argument-hard-error-in-future / opt / boxen / repo / script / boxen --no-fde. Cảm ơn tất cả mọi người đã giúp đỡ.
g8M

Mavericks 10.9.3 cập nhật ruby ​​thành: ruby ​​2.0.0p451 (2014-02-24 sửa đổi 45167) [Universal.x86_64-darwin13] Điều này dường như giải quyết được sự cố.
Shahar Hadas

1
Vấn đề là với phiên bản ruby ​​cũ như @Sash nói. Tôi đã phải cập nhật thủ công lên 2.0.0p451 từ 2.0.0p2 .. bằng cách sử dụng rvm: rvm install ruby-2.0.0-p451. RVM nên thiết lập nó như là phiên bản mặc định thì bạn chỉ cần phải cài đặt lại viên ngọc của mình
Adam Spence

Tôi đang gặp vấn đề này với RVM ruby 2.2.0p0 (2014/12/25 sửa đổi 49.005)
Sonny Parlin

Câu trả lời:


145

Tôi đang gặp phải vấn đề tương tự sau khi cập nhật Xcode lên 5.1 và tin tức từ Apple không tốt. Từ Ghi chú phát hành Xcode 5.1 :

  • Trình biên dịch LLVM của Apple trong Xcode 5.1 coi các tùy chọn dòng lệnh không được công nhận là lỗi. Vấn đề này đã được thấy khi xây dựng cả phần mở rộng gốc Python và Ruby Gems, trong đó một số tùy chọn trình biên dịch không hợp lệ hiện được chỉ định.

Các dự án sử dụng các tùy chọn trình biên dịch không hợp lệ sẽ cần được thay đổi để loại bỏ các tùy chọn đó. Để giúp giảm bớt quá trình chuyển đổi đó, trình biên dịch sẽ tạm thời chấp nhận một tùy chọn để hạ cấp lỗi thành cảnh báo:

-Wno-error=unused-command-line-argument-hard-error-in-future

Để giải quyết vấn đề này, hãy đặt biến môi trường ARCHFLAGS để hạ cấp lỗi xuống cảnh báo.

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

Có vẻ như tất cả các đá quý vi phạm các tùy chọn trình biên dịch phải được cập nhật để sử dụng các tùy chọn hợp lệ. Nó được tuyên bố rõ ràng rằng: Tùy chọn này [hạ cấp lỗi xuống cảnh báo] sẽ không được hỗ trợ trong tương lai .

Ghi chú tiếng kêu mà chúng tôi đang thấy ( đây sẽ là một lỗi khó (không thể hạ cấp xuống cảnh báo) trong tương lai ) tương ứng với thay đổi được thông báo trong ghi chú phát hành.


Để trả lời cụ thể câu hỏi của bạn, hãy sử dụng cách sau để cài đặt json gem:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install json

Tuy nhiên, lưu ý rằng đây chỉ là một bản sửa lỗi tạm thời.


1
Cảm ơn bạn rất nhiều, bạn đã giúp tôi rất nhiều. Kể từ khi cập nhật lên phiên bản 5.1 của công cụ Xcode CLI, tôi đã gặp rất nhiều lỗi khi cố gắng đóng gói dự án Rails 4. Mặc dù tôi cần phải vượt qua ARCHFLAGShai lần: khi cài đặt các viên ngọc bị hỏng cụ thể và khi chạy Bundler.

Rất vui vì tôi có thể giúp được Rafael. Tôi đã dành phần lớn thời gian trong ngày của mình trong cùng một mớ hỗn độn.
Kasper Munck

Tôi đã làm rất nhiều thứ để giải quyết vấn đề này và tôi không biết chính xác cách nào đã giải quyết được nhưng tôi đã cài đặt phiên bản ruby ​​mới, tải xuống phiên bản trước của Công cụ dòng lệnh (Cuối tháng 10) và thực hiện lệnh trên câu trả lời này. Điều này đã giải quyết vấn đề của tôi. Trong trường hợp của tôi, tôi đang sử dụng các hộp để cài đặt môi trường của mình nên lệnh cuối cùng tôi sử dụng là ARCHFLAGS = -Wno-error = used-command-line-parameter-hard-error-in-future / opt / boxen / repo / script / boxen - không có lỗi. Cảm ơn mọi người đã giúp đỡ
g8M

2
Tôi không thể làm cho giải pháp này phù hợp với tôi Vẫn không thành công với clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-argument-hard-error-in-future]Bất kỳ ý tưởng?
rauberdaniel

1
Bạn có thể thử xuất một cách rõ ràng export ARCHFLAGS="..." , sau đó chạy lệnh biên dịch của mình trong một dòng mới, chẳng hạn như gem install json(Tôi đang tự biên dịch các mô-đun Python). Nhân tiện, đừng quên thêm các thẻ vòm hiện có trước đó vào dòng, nếu không chúng sẽ bị ghi đè.
Michiel Kauw-A-Tjoe

107

Một lớp lót để khắc phục điều đó

curl https://gist.githubusercontent.com/Paulche/9713531/raw/1e57fbb440d36ca5607d1739cc6151f373b234b6/gistfile1.txt | sudo patch /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb

Không hoạt động. Chạy lệnh và gặp thất bại:patching file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb Hunk #1 FAILED at 82. Hunk #2 FAILED at 125. 2 out of 2 hunks FAILED -- saving rejects to file /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin15/rbconfig.rb.rej
Elijah Murray

19

Để giải quyết vấn đề, bạn có thể cài đặt phiên bản ruby ​​mới nhất như được @Sash mô tả. Bạn có thể sử dụng các lệnh sau để làm như vậy. Trong trường hợp bạn đã cài đặt rvm, bạn không cần phải cài đặt lại nó.

#Install rvm
\curl -sSL https://get.rvm.io | bash -s stable

#Install ruby version 2.0.0-p451
rvm install ruby-2.0.0-p451

#Print ruby version to verify that it was installed successfully
ruby -v

#Install json gem
sudo gem install json

12

Sự cố đã được Ruby giải quyết:

https://bugs.ruby-lang.org/issues/9624

bây giờ chúng ta chỉ cần đợi Apple cập nhật phiên bản ruby ​​của họ (2.0.0p247) lên phiên bản mới nhất (2.0.0p451) vẫn chưa ra mắt ... (hoặc brew / macport it)

Cập nhật (2014-05-15): Mavericks 10.9.3 cập nhật ruby ​​lên ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13] Và điều này dường như giải quyết được vấn đề.


4

@Muncken đã cung cấp câu trả lời để cài đặt từng viên ngọc một:

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName

Dựa trên câu trả lời của Muncken, tôi đã thử rằng nó cũng hoạt động khi sử dụng bundle install

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future bundle install

Bạn có thể đưa ra một mô tả?
bjb568

như @Muncken đã nói, nhưng anh ấy chỉ cung cấp câu trả lời gem install, tôi đã thử điều đó bundle installcũng hoạt động
worldask

Câu trả lời của bạn phải hoàn chỉnh theo cách riêng của nó, ngay cả khi không có ngữ cảnh của các câu trả lời khác.
bjb568

Đúng vậy. Tốt hơn nhiều và đầy đủ.
bjb568

ARCHFLAGS = -Wno-error = used-command-line-parameter-hard-error-in-future có thể được sử dụng trong mọi lệnh không thành công với đối số clang: error: chưa biết: '-multiply_definedsuppress'. Thực ra đây nói với trình biên dịch kêu vang rằng lỗi này phải được coi là cảnh báo
g8M

2

Trong trường hợp của tôi, tôi thực sự gặp sự cố tương tự, nhưng không phải trên ruby ​​hệ thống, mà trên ruby ​​được cài đặt bởi rvm từ OSX 10.8 và nó có vấn đề sau khi nâng cấp lên OSX 10.9.

Một cài đặt lại đơn giản hoạt động: rvm reinstall ruby-2.1.1


Sau khi thử mọi thứ dưới ánh nắng mặt trời để khắc phục sự cố này, đây là những gì đã làm cho tôi! Cảm ơn bạn!
Kẻ xâm phạm W

1

Trên OSX 10.10, tôi gặp một số vấn đề khi chạy, rails new firstappchẳng hạn như:

ERROR:  Error installing json:
ERROR: Failed to build gem native extension.
fatal error: 'ruby/config.h' file not found

Tôi đã cập nhật rvm với cấu hình này và tất cả các lỗi đã biến mất !:

rvm get stable --auto-dotfiles

Bạn có thể biết từ tên ứng dụng rằng tôi mới bắt đầu tìm hiểu Ruby on Rails, vì vậy lời khuyên trên có thể có hoặc có thể không phù hợp với bạn.


1

Một lớp lót của Paul Chechetin dường như không hoạt động nữa (21/9/15). Tuy nhiên, câu trả lời này cho bài đăng được đề cập trong câu trả lời của Pete đã giải quyết được vấn đề cho tôi:

  • (a) Cài đặt XCode của Apple, sau đó (b) khởi chạy nó và chấp nhận các điều khoản cấp phép (Tôi đã thực hiện (a), nhưng không phải (b).)
  • sudo gem uninstall compass
  • sudo gem install compass

Tôi đã cập nhật Xcode nhưng chưa bao giờ khởi chạy nó. Khi tôi khởi chạy nó, nó sẽ nhắc tôi chấp nhận một cái gì đó, sau đó nó phải "cài đặt các thành phần." Sau đó, tôi đã thử gem install jsonlại và nó hoạt động!
Sarah Vessels

1

Không ai trong số này làm việc cho tôi.

Những gì cuối cùng đã hoạt động là chạy lệnh với một sudo -

gem cài đặt byebug -v '9.0.6'


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.