1
  • 使用 rvm
  • 使用红宝石 1.9.2
  • 安装在 OS X 中的相同 gem(和支持库)
  • 已安装链接语法(通过 apt-get)
  • pkg-config 按预期工作。

当我运行时,gem install linkparser我收到以下错误:

构建原生扩展。这可能需要一段时间...
错误:安装链接解析器时出错:
    错误:无法构建 gem 原生扩展。

/home/locallyclient/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
检查 pkg-config... 是的
检查 -llink-grammar 中的 dictionary_create()... *** extconf.rb 失败 ***
由于某种原因无法创建 Makefile,可能缺少
必要的库和/或头文件。查看 mkmf.log 文件了解更多信息
细节。您可能需要配置选项。

(加上更多,包括 cmd 行选项和堆栈跟踪)。

mkmf.log 看起来像:

“gcc -o conftest -I/~/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/i686-linux -I/~/.rvm/rubies/ruby-1.9.2- p0/include/ruby-1.9.1/ruby/backward -I
/~/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1 -I。-D_FILE_OFFSET_BITS=64 -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-括号 -Wpointer-arith -Wwrite-st
环 -Wno-missing-field-initializers -Wno-long-long -fPIC-I/usr/local/include conftest.c -L。-L/~/.rvm/rubies/ruby-1.9.2-p0/lib -Wl,-R/~/.r
vm/rubies/ruby-1.9.2-p0/lib -L。-rdynamic -Wl,-export-dynamic-L/usr/local/lib -Wl,-R -Wl,/~.rvm/rubies/ruby-1.9.2-p0/lib -L/~/.rvm/rubie
s/ruby-1.9.2-p0/lib -lruby-static -lpthread -lrt -ldl -lcrypt -lm -lc"
cc1:错误:无法识别的命令行选项“-fPIC-I/usr/local/include”
检查的程序是:
/* 开始/
1:#include“ruby.h”
2:
3: int main() {返回 0;}
/结束*/

(为了便于阅读,我将主路径替换为“~”)

具体来说: cc1:错误:无法识别的命令行选项“-fPIC-I/usr/local/include”

关于为什么这个参数会被破坏以及我可以在哪里修复它的任何想法?

4

4 回答 4

1

这是我尝试的几个步骤。

获取 ruby​​ 源代码(目前为 1.9.2 p180)

$ wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p180.tar.gz
$ tar zxvf ruby-1.9.2-p180.tar.gz

导出 ruby​​ 的包含路径,你可以将它写在 ~/.bashrc 中,以启用其他原生扩展。

$ export CPATH="`pwd`/ruby-1.9.2-p180/include":$CPATH

并且看起来链接语法的 apt-get 版本是 4.0 版,而链接解析器抱怨太旧 (>=4.7.0),所以获取和中继版本,因为他们提到了该站点。v4.7.4 现在

http://www.abisource.com/projects/link-grammar/#download

注意:如果您的红宝石在/usr/local/bin,请更改--prefix=/usr--prefix=/usr/local

$ svn co http://svn.abisource.com/link-grammar/trunk link-grammar
$ cd link-grammar
$ ./autogen.sh
$ ./configure --prefix=/usr
$ make
$ sudo make install
$
$ sudo gem install linkparser
Building native extensions.  This could take a while...
Successfully installed linkparser-1.1.0
1 gem installed
Installing ri documentation for linkparser-1.1.0...

测试代码以确认工作正常

参考:http ://deveiate.org/code/linkparser/

$ irb
> require 'linkparser'
=> true
> dict = LinkParser::Dictionary.new( :screen_width => 100 )
> sent = dict.parse( "People use Ruby for all kinds of nifty things." )
> puts sent.constituent_tree_string
(S (NP People)
   (VP use
       (NP Ruby)
       (PP for
           (NP (NP all kinds)
               (PP of
                   (NP nifty things)))))
   .)
=> nil
> puts sent.diagram

    +---------------------------------Xp--------------------------------+
    |                +-----MVp----+-----Jp-----+     +------Jp-----+    |
    +----Wd---+--Sp--+--Os--+     |     +--Dmc-+--Mp-+    +----A---+    |
    |         |      |      |     |     |      |     |    |        |    |
LEFT-WALL people.p use.v Ruby.f for.p all.a kinds.n of nifty.a things.n . 

=> nil
于 2011-02-27T06:56:56.647 回答
1

我遇到了同样的问题,linkparser 找不到 ruby​​/intern.h 或类似的东西。我按照上述说明进行操作,但仍然无法正常工作。我做了一个从 /usr/lib/ruby/1.8/x86_64-linux/ruby/* 到 /usr/lib/ruby/1.8/x86_64-linux/* 的软链接(ln -s),当我去编译链接解析器时它就像一个冠军。然后我用 1.9.2 尝试了它,它也在另一个盒子上工作。

我也遇到了 wordnet 的问题,这个修复也可以解决这个问题。

克里斯

于 2011-03-30T22:20:52.950 回答
1

gem 源代码中有一个错误导致 CFLAGS 被连接为 -fPIC-I/usr/local/include而不是-fPIC -I/usr/local/include

修复(参考 Gem 版本 1.1.0):

在 中./ext/exconf.rb,找到以下几行(应该是第 20 和 21 行):

$LDFLAGS << read_cmd_output( pkgconfig, '--libs-only-L', 'link-grammar' )
$CFLAGS << read_cmd_output( pkgconfig, '--cflags', 'link-grammar' ) 

并将它们更改为:

$LDFLAGS << ' ' + `#{pkgconfig} --libs-only-L link-grammar`.chomp
$CFLAGS <<  ' ' + `#{pkgconfig} --cflags link-grammar`.chomp

这应该允许您在 rvm gemset 中安装 gem

于 2011-05-12T05:39:11.490 回答
1

我已经发布了 gem 的 1.1.2 版本,其中包括来自 @alexander 的修复。

于 2011-05-13T00:03:08.180 回答