在Ubuntu 10上安装linkparser时遇到问题

时间:2011-02-27 05:59:33

标签: ubuntu rubygems g++ linkparser

  • 使用rvm
  • 使用ruby 1.9.2
  • OS X中安装的相同gems(和支持库)
  • 安装了link-grammar(通过apt-get)
  • pkg-config按预期工作。

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

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

/home/locallyclient/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
checking for pkg-config... yes
checking for dictionary_create() in -llink-grammar... *** 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.

(加上更多包括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-parentheses -Wpointer-arith -Wwrite-st
rings -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: error: unrecognized command line option "-fPIC-I/usr/local/include"
checked program was:
/* begin /
1: #include "ruby.h"
2: 
3: int main() {return 0;}
/ end */

(我用'〜'替换主路径以便于阅读)

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

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

4 个答案:

答案 0 :(得分:1)

这是我尝试的几个步骤。

获取红宝石来源(现在为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

export包含ruby的路径,您可以在〜/ .bashrc中编写它,以便为其他原生扩展启用。

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

看起来像apt-get版本的link-grammer是版本4.0和linkparser complaining too old (>=4.7.0),所以get和trunk版本就像他们提到网站一样。 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

答案 1 :(得分:1)

我遇到了同样的问题,其中linkparser无法找到ruby / intern.h或者其中一些。我按照上面的说明进行操作仍然无效。我从/usr/lib/ruby/1.8/x86_64-linux/ruby/*到/usr/lib/ruby/1.8/x86_64-linux/*做了一个软链接(ln -s),当我去编译linkparser时它就像一个冠军。然后我用1.9.2尝试了它,它也在不同的盒子上工作。

我也遇到过wordnet的问题,而且这个问题也解决了这个问题。

克里斯

答案 2 :(得分: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

答案 3 :(得分:1)

我发布了gem的1.1.2版,其中包含了@alexander的修复程序。