我在windows上安装ruby-ldap gem时遇到问题(我有ruby 2.1.6并已配置devkit来编译扩展)。当我尝试安装gem时出现以下错误,它会抛出以下错误
extconf.rb:197:in ``': Permission denied - lib /def:./win/wldap32.def /out:./win/wldap32.lib (Errno:
:EACCES)
我尝试以管理员身份安装 我尝试在win文件夹中添加wldap32.lib文件
以下是此问题的完整日志 暂时增强PATH以包括DevKit ...... 构建原生扩展。这可能需要一段时间...... 错误:安装ruby-ldap时出错: 错误:无法构建gem原生扩展。
C:/Ruby21/bin/ruby.exe extconf.rb
*** 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.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby21/bin/ruby
--with-netscape
--without-netscape
--without-netscape
--with-mozilla
--without-mozilla
--without-mozilla
--with-openldap1
--without-openldap1
--without-openldap1
--with-openldap2
--without-openldap2
--without-openldap2
--with-wldap32
--without-wldap32
--without-wldap32
--with-ldap-dir
--without-ldap-dir
--with-ldap-include
--without-ldap-include=${ldap-dir}/include
--with-ldap-lib
--without-ldap-lib=${ldap-dir}/lib
--with-ldap-dir
--without-ldap-dir
--without-ldap-dir
--with-ldap
--without-ldap
--without-ldap
extconf.rb:197:in ``': Permission denied - lib /def:./win/wldap32.def /out:./win/wldap32.lib (Errno:
:EACCES)
from extconf.rb:197:in `<main>'
--with-wldap32
extconf failed, exit code 1
答案 0 :(得分:1)
来自README
的Windows不正式支持WindowsPORTS
* FreeBSD ("Akinori -Aki- MUSHA" <knu@idaemons.org>)
* Debian (Akira Yamada <akira@ruby-lang.org>)
-------------------------------------------------------------------------------
此外,还有https://github.com/bearded/ruby-ldap/wiki/How-to-compile-ruby-ldap-on-Windows但是我没有看到它与最新版本一起使用,以下是为了支持它而需要更改的一些内容。
lib
,devkit使用link
,因此必须在extconf.rb中将其更改为link /lib
,这就是为您提供权限被拒绝的错误。time.h
问题,因此time.h中的每个包含都必须更改为#if HAVE_SYS_TIME_H && !defined(_WIN32) #include #endif
have_header("sys/time.h") unless win32
conn.c:183: undefined reference to
ldap_initialize'most likely because something isn't installed, I'm thinking
ldap.h`(读ldap二进制文件)所以,抱歉,但我认为这是不行的。