当我运行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”
关于为什么这个参数会被破坏以及我可以修复它的任何想法?
答案 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的修复程序。