我目前正在尝试在我的电脑上安装watir,但目前正在点击下面的错误,我想不出为什么会这样?
我按照以下步骤安装:
Download ruby 1.9.2:
http://www.ruby-lang.org/en/downloads/
Install.
Download RubyGems:
http://rubygems.org/pages/download
Install.
Download the DevKit so that native extensions can be built:
ruby dk.rb init
ruby dk.rb review
ruby dk.rb install
gem update --system (or to do more quickly: gem update --system --no-rdoc --no-ri)
gem install watir
当我这样做时,我得到的是下面的错误日志。有谁知道我怎么能让Watir安装好吗?
C:\Documents and Settings\IE User\Desktop\Ruby and Eclipse>gem install watir
Fetching: win32-api-1.4.8-x86-mingw32.gem (100%)
Fetching: windows-api-0.4.0.gem (100%)
Fetching: windows-pr-1.2.1.gem (100%)
Fetching: win32-process-0.6.5.gem (100%)
Fetching: xml-simple-1.1.1.gem (100%)
Fetching: hoe-2.12.4.gem (100%)
Fetching: s4t-utils-1.0.4.gem (100%)
WARNING: s4t-utils-1.0.4 has an invalid nil value for @cert_chain
Fetching: builder-3.0.0.gem (100%)
Fetching: user-choices-1.1.6.1.gem (100%)
Fetching: commonwatir-2.0.4.gem (100%)
Fetching: nokogiri-1.5.0-x86-mingw32.gem (100%)
Fetching: ffi-1.0.11.gem (100%)
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing watir:
ERROR: Failed to build gem native extension.
C:/Ruby192/bin/ruby.exe extconf.rb
checking for ffi.h... no
checking for ffi.h in /usr/local/include... no
checking for rb_thread_blocking_region()... yes
checking for ruby_thread_has_gvl_p()... yes
checking for ruby_native_thread_p()... yes
checking for rb_thread_call_with_gvl()... yes
creating extconf.h
creating Makefile
make
C:/Ruby192/bin/ruby -e "puts 'EXPORTS', 'Init_ffi_c'" > ffi_c-i386-mingw32.def
Configuring libffi
make -C "/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/ffi_c/libffi"
make[1]: Entering directory /c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/
ffi_c/libffi'
make "AR_FLAGS=" "CC_FOR_BUILD=" "CFLAGS=" "CXXFLAGS=" "CFLAGS_FOR_BUILD=" "CFLA
GS_FOR_TARGET=" "INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c
-m 644" "INSTALL_PROGRAM=/usr/bin/install -c" "INSTALL_SCRIPT=/usr/bin/install -
c" "JC1FLAGS=" "LDFLAGS=" "LIBCFLAGS=" "LIBCFLAGS_FOR_TARGET=" "MAKE=make" "MAKE
INFO=/bin/sh /c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/ffi_c/libffi/mis
sing --run makeinfo " "PICFLAG=" "PICFLAG_FOR_TARGET=" "RUNTESTFLAGS=" "SHELL=/b
in/sh" "exec_prefix=/usr/local" "infodir=/usr/local/share/info" "libdir=/usr/loc
al/lib" "prefix=/usr/local" "AR=ar" "AS=as" "CC=gcc" "CXX=g++" "LD=c:/documents
and settings/ie user/desktop/ruby and eclipse/mingw/mingw32/bin/ld.exe" "NM=/usr
/mingw/bin/nm" "RANLIB=ranlib" "DESTDIR=" all-recursive
make[2]: Entering directory/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/
ffi_c/libffi'
Making all in include
make[3]: Entering directory /c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/
ffi_c/libffi/include'
make[3]: Nothing to be done forall'.
make[3]: Leaving directory /c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/f
fi_c/libffi/include'
Making all in testsuite
make[3]: Entering directory/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/
ffi_c/libffi/testsuite'
make[3]: Nothing to be done for all'.
make[3]: Leaving directory/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/f
fi_c/libffi/testsuite'
Making all in man
make[3]: Entering directory /c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/
ffi_c/libffi/man'
make[3]: Nothing to be done forall'.
make[3]: Leaving directory /c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/f
fi_c/libffi/man'
make[3]: Entering directory/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/
ffi_c/libffi'
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./inc
lude -Iinclude -I./src -Wall -g -fexceptions -c -o src/debug.lo src/debug.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -Wa
ll -g -fexceptions -c src/debug.c -DDLL_EXPORT -DPIC -o src/.libs/debug.o
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./inc
lude -Iinclude -I./src -Wall -g -fexceptions -c -o src/prep_cif.lo src/prep_ci
f.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -Wa
ll -g -fexceptions -c src/prep_cif.c -DDLL_EXPORT -DPIC -o src/.libs/prep_cif.o
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./inc
lude -Iinclude -I./src -Wall -g -fexceptions -c -o src/types.lo src/types.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -Wa
ll -g -fexceptions -c src/types.c -DDLL_EXPORT -DPIC -o src/.libs/types.o
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./inc
lude -Iinclude -I./src -Wall -g -fexceptions -c -o src/raw_api.lo src/raw_api.
c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -Wa
ll -g -fexceptions -c src/raw_api.c -DDLL_EXPORT -DPIC -o src/.libs/raw_api.o
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./inc
lude -Iinclude -I./src -Wall -g -fexceptions -c -o src/java_raw_api.lo src/jav
a_raw_api.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -Wa
ll -g -fexceptions -c src/java_raw_api.c -DDLL_EXPORT -DPIC -o src/.libs/java_r
aw_api.o
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./inc
lude -Iinclude -I./src -Wall -g -fexceptions -c -o src/closures.lo src/closure
s.c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -Wa
ll -g -fexceptions -c src/closures.c -DDLL_EXPORT -DPIC -o src/.libs/closures.o
/bin/sh ./libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./inc
lude -Iinclude -I./src -Wall -g -fexceptions -c -o src/x86/ffi.lo src/x86/ffi.
c
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -Wa
ll -g -fexceptions -c src/x86/ffi.c -DDLL_EXPORT -DPIC -o src/x86/.libs/ffi.o
/bin/sh ./libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iin
clude -I./src -I. -I./include -Iinclude -I./src -c -o src/x86/win32.lo src/x86
/win32.S
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I. -I./include -Iinclude -I./src -I.
-I./include -Iinclude -I./src -c src/x86/win32.S -DDLL_EXPORT -DPIC -o src/x86
/.libs/win32.o
/bin/sh ./libtool --tag=CC --mode=link gcc -Wall -g -fexceptions -version-inf
o grep -v '^#' ./libtool-version -no-undefined -o libffi.la -rpath /usr/local
/lib src/debug.lo src/prep_cif.lo src/types.lo src/raw_api.lo src/java_raw_api.l
o src/closures.lo src/x86/ffi.lo src/x86/win32.lo
libtool: link: gcc -o .libs/libffi.dll.a src/.libs/debug.o src/.libs/prep_cif.o
src/.libs/types.o src/.libs/raw_api.o src/.libs/java_raw_api.o src/.libs/closur
es.o src/x86/.libs/ffi.o src/x86/.libs/win32.o echo "X" | /usr/bin/sed -e 1
s/^X// -e 's/ -lc$//' -link -dll
c:/documents and settings/ie user/desktop/ruby and eclipse/mingw/bin/../lib/gcc/
mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -link
collect2: ld returned 1 exit status
make[3]: *** [libffi.la] Error 1
make[3]: Leaving directory /c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/f
fi_c/libffi'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/f
fi_c/libffi'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/f
fi_c/libffi'
make: *** ["/c/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/ffi_c/libffi"/.li
bs/libffi_convenience.a] Error 2
Gem files will remain installed in C:/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.1
1 for inspection.
Results logged to C:/Ruby192/lib/ruby/gems/1.9.1/gems/ffi-1.0.11/ext/ffi_c/gem_m
ake.out
我完全不知道如何纠正这个问题。我在XP x86和Win 7 X64上都尝试过这一点无济于事。
提前致谢 安迪
答案 0 :(得分:7)
FFI的更高版本一直是一些问题的根源,因为它们不再包含本机Windows版本并且必须动态构建一个版本,但也因为与watir或webdrivers的一些不兼容性
尝试这样做
gem uninstall ffi
(just in case there is anything that managhed to get installed)
gem install ffi -v 1.0.9
然后安装watir或watir-webdriver
<强>更新强>
最新版本的FFI可以与Watir和Watir-Webdriver一起使用,但不像早期版本那样“预编译”。所以要在PC上安装它们如果你还没有它,你需要得到Devkit。一旦安装了devkit并为其运行了安装脚本,就可以使用gem install ffi
来安装最新的FFI gem,它应该可以正常工作。
答案 1 :(得分:1)
我已经更新了有关如何在Windows上安装Watir的说明。如果您遵循它们,您将能够安装最新版本的Ruby,Watir和ffi。
https://github.com/zeljkofilipin/watirbook/blob/master/installation/windows.md