So installieren Sie Entwicklungstools, wenn Ruby aus dem Quellcode kompiliert wird

So installieren Sie Entwicklungstools, wenn Ruby aus dem Quellcode kompiliert wird

Ich habe Windows 8 und muss Ruby 2.1.2 für ein Projekt installieren. Ich folgtediese Anweisungen. Ich habe die Quelle in entpackt C:\Ruby2.1.2\src\, nmakein ausgeführt C:\Ruby2.1.2\build\und nmake installmit dem Zielordner ausgeführt C:\Ruby2.1.2\bin\. Als ich Ruby 2.1.2 installierte, erhielt ich eine Reihe von Fehlern wie diesen:

configuring zlib
Failed to configure zlib. It will not be installed.

Dies geschah für dbm, fiddle, gdbm, openssl, pty, readline, syslog, tk, tk/tkutil und zlib. Die Tests in nmake testallen Fällen waren jedoch erfolgreich.

Ich habe bereits Ruby 2.0.0 und 1.9.3, aber ich brauche 2.0.0 für andere Projekte. Ich verwendepik 0.3.0.preum die Abhängigkeiten zu verwalten, und es scheint für 2.0.0 und 1.9.3 zu funktionieren.

Wenn ich jedoch für irgendetwas auf Ruby 2.1.2 umstelle gem install, erhalte ich:

ERROR:  Loading command: install (LoadError)
        cannot load such file -- zlib
ERROR:  While executing gem ... (NoMethodError)
    undefined method `invoke_with_build_args' for nil:NilClass

Nach einigem Suchen habe ich versucht, zu C:\Ruby2.1.2\src\ruby-2.1.2\ext\zlib zu navigieren und auszuführen. ruby extconf.rbDer dabei erhaltene Fehler war:

checking for deflateReset() in z.lib... *** 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
        --srcdir=.
        --curdir
        --ruby=C:/Ruby2.1.2/bin/usr/bin/ruby
        --with-zlib-dir
        --with-zlib-include
        --without-zlib-include=${zlib-dir}/include
        --with-zlib-lib
        --without-zlib-lib=${zlib-dir}/lib
        --with-zlib
        --without-zlib
C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:541:in `try_link0'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:556:in `try_link'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:742:in `try_func'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:973:in `block in have_library'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:918:in `block in checking_for'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in postpone'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:321:in `open'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:351:in `block in postpone'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:321:in `open'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:347:in `postpone'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for'
        from C:/Ruby2.1.2/bin/usr/lib/ruby/2.1.0/mkmf.rb:968:in `have_library'
        from extconf.rb:13:in `block in <main>'
        from extconf.rb:13:in `each'
        from extconf.rb:13:in `find'
        from extconf.rb:13:in `<main>'

Es sieht so aus, als müsste ich Entwicklungstools installieren. AberDie nur Quellen ich fandzum Installieren von Entwicklungstools habe ich auf den RubyInstaller verwiesen, in dem Ruby 2.1.2 noch nicht installiert ist.

Ich habe auch versucht, zlib separat zu installieren und auszuführen ruby extconf.rb --with-zlib-dir="C:\Program Files (x86)\GnuWin32", aber dadurch wurde mir wieder der zweite Fehler angezeigt.

Ich habe auch versucht, auszuführen gem install zlib -- --with-zlib-dir="C:\Program Files (x86)\GnuWin32", aber dabei kam wieder der erste Fehler.

Wie installiere ich Entwicklungstools, damit Rubygems funktioniert?

Antwort1

Eva, konnte Ihr Problem gelöst werden?

Ich mache genau dasselbe wie Sie (verwende Windows 8.1) und habe zlib endlich installiert.

1) Ich habe zlib128-dll.zip heruntergeladen vonhttp://zlib.netund entpackte den Inhalt in ein Verzeichnis (z. B. c:\zlib).

2) Dann folgen Sie einigen Hinweisen aus diesem Beitrag (https://www.ruby-forum.com/topic/4421852), habe ich diese Verzeichnisse aus meinem Verzeichnis c:\ruby-build\usr erstellt:

zlib
zlib\include
zlib\lib

3) Dann habe ich einige Dateien aus meinen C:\zlib-Verzeichnissen in meine c:\ruby-build\usr-Verzeichnisse kopiert:

*.h files (both) from C:\zlib\include to c:\ruby-build\usr\zlib\include 
zdll.lib from C:\zlib\lib to c:\ruby-build\usr\zlib\lib. 
zlib1.dll *AS* zlib.dll from C:\zlib to both c:\ruby-build\usr\zlib\lib and c:\ruby-build\usr\bin 
    (not sure which one or both are necessary).

4) Dann navigierte ich von einem VS 2012 Native Tools-Eingabeaufforderungsfenster zu C:\ruby-2.1.2\ext\zlib und führte Folgendes aus:

\ruby-build\usr\bin\ruby extconf.rb --with-zlib-dir=c:/ruby-build/usr/zlib

5) Dann nmake, gefolgt von nmake install, und voilà, zlib war endlich installiert.

Wenn Sie Fragen zu meinen Schritten haben, lassen Sie es mich wissen.

Antwort2

Ruby enthält mehrere Bibliotheken, ein Teil ihrerStandardbibliothek(stdlib), das von externen Bibliotheken abhängt, wie Zlib, OpenSSL, FFI, um nur einige zu nennen.

Um Ruby zu erstellen, müssen Sie diese Bibliotheken für Ruby verfügbar machen, damit es mit ihnen kompilieren kann.

Bei RubyInstaller haben wir dieses Problem gelöst, indem wir die Abhängigkeiten als Pakete erstellt und sie während der Ruby-Kompilierung verwendet haben.

In Ihrem Fall scheinen Sie Visual Studio zu verwenden. Dies bedeutet, dass Sie die von RubyInstaller bereitgestellten Binärpakete nicht verwenden können, da deren Laufzeitabhängigkeiten unterschiedlich sind.

Wenn die Verwendung von Visual Studio wirklich keine Voraussetzung ist, können Sie vielleicht RubyInstaller-Rezepte verwenden, um ein lokales Paket von Ruby 2.1.x zu generieren:

cd rubyinstaller
rake ruby21 DKVER=mingw64-32-4.7.2 LOCAL=C:\path\to\ruby\source

Dies weist RubyInstaller-Rezepte an, mingw64den Compiler (GCC) 32bits Version 4.7.2 zu verwenden und den lokalen Quellcode-Checkout zu verwenden, der inLOCAL

All dies wird behandelt in RubyInstaller'sLiesmich

Wenn Sie weitere Hilfe benötigen, wenden Sie sich bitte an RubyInstaller'sGoogle-Gruppe

verwandte Informationen