微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ruby- 错误:无法构建 gem 本机扩展 gcc:错误:无法识别的命令行选项“-Wduplicated-cond”

如何解决Ruby- 错误:无法构建 gem 本机扩展 gcc:错误:无法识别的命令行选项“-Wduplicated-cond”

我在通过 wsl ubuntu 在 VScode 中安装 ruby​​ gem 时遇到问题。

具体来说,目前是 rest-client、json、pry-byebug 和 byebug。 我能够毫无问题地安装 ruval gem 和 pry gem。 我不确定是否有些缺少 gem 依赖项、需要升级,或者文件路径需要以某种方式更改。

我注意到 Ubuntu wsl 终端文件路径是“/mnt/C”。可能与它有关? 我认为 C/ 只是普通的 windows,而 /mnt/C 是相同的 Ubuntu 版本,用于访问 C/ windows 文件路径。

我的终端中不断收到如下消息:

// ♥  gem install json
Building native extensions. This Could take a while...
/usr/share/rvm/rubies/ruby-2.6.1/lib/ruby/2.6.0/open3.rb:213: warning: Insecure world writable dir /mnt/c in 
PATH,mode 040777
ERROR:  Error installing json:
        ERROR: Failed to build gem native extension.
    current directory: /home/mjj4685mjj/.rvm/gems/ruby-2.6.1/gems/json-2.5.1/ext/json/ext/generator
/usr/share/rvm/rubies/ruby-2.6.1/bin/ruby -I /usr/share/rvm/rubies/ruby-2.6.1/lib/ruby/site_ruby/2.6.0 -r ./siteconf20210404-8832-c0i3v3.rb extconf.rb
creating Makefile
current directory: /home/mjj4685mjj/.rvm/gems/ruby-2.6.1/gems/json-2.5.1/ext/json/ext/generator
make DESTDIR\= clean
current directory: /home/mjj4685mjj/.rvm/gems/ruby-2.6.1/gems/json-2.5.1/ext/json/ext/generator
make DESTDIR\=
compiling generator.c
gcc: error: unrecognized command line option '-Wduplicated-cond'
gcc: error: unrecognized command line option '-Wmisleading-indentation'
gcc: error: unrecognized command line option '-Wrestrict'
gcc: error: unrecognized command line option '-Wimplicit-fallthrough=0'
make: *** [Makefile:244: generator.o] Error 1
make Failed,exit code 2
Gem files will remain installed in /home/mjj4685mjj/.rvm/gems/ruby-2.6.1/gems/json-2.5.1 for inspection.     
Results logged to /home/mjj4685mjj/.rvm/gems/ruby-2.6.1/extensions/x86_64-linux/2.6.0/json-2.5.1/gem_make.out[21:58:57]  
// ♥ SandBox (main) 

解决方法

这不是 /mnt/c/ 路径问题:

const vision = require('@google-cloud/vision');
const client = new vision.ImageAnnotatorClient();

const fileName = 'baba.jpg';

// Read a local image as a text document
const [result] = await client.textDetection(fileName);
const fullTextAnnotation = result.fullTextAnnotation;
console.log(`Full text: ${fullTextAnnotation.text}`);
fullTextAnnotation.pages.forEach(page => {
  page.blocks.forEach(block => {
    console.log(`Block confidence: ${block.confidence}`);
    block.paragraphs.forEach(paragraph => {
      console.log(`Paragraph confidence: ${paragraph.confidence}`);
      paragraph.words.forEach(word => {
        const wordText = word.symbols.map(s => s.text).join('');
        console.log(`Word text: ${wordText}`);
        console.log(`Word confidence: ${word.confidence}`);
        word.symbols.forEach(symbol => {
          console.log(`Symbol text: ${symbol.text}`);
          console.log(`Symbol confidence: ${symbol.confidence}`);
        });
      });
    });
  });
});

gems 无法编译和完全安装,因为我有一个过时的 'gcc' (Homebrew) 版本。:

warning: Insecure world writable dir /mnt/c in PATH,mode 040777

解决方案:

在终端运行:compiling generator.c gcc: error: unrecognized command line option '-Wduplicated-cond' gcc: error: unrecognized command line option '-Wmisleading-indentation' gcc: error: unrecognized command line option '-Wrestrict' gcc: error: unrecognized command line option '-Wimplicit-fallthrough=0' make: *** [Makefile:244: generator.o] Error 1 make failed,exit code 2 ...并检查“gcc”或“g++”是否有任何过时 功能。

然后运行:brew outdated

(来源:https://docs.brew.sh/FAQ

升级安装完成后,我就可以正常安装 gems,我的所有程序都运行良好。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。