web-dev-qa-db-fra.com

Erreur d'installation de Gem: vous devez d'abord installer les outils de développement

J'ai essayé d'installer la gemme ' sinatra-websocket ', mais quand j'ai couru gem install sinatra-websocket, J'ai eu cette erreur ...

ERROR: Failed to build gem native extension

... de même que ...

C:/Ruby193/bin/Ruby.exe extconf.rb
checking for main() in -lc... *** 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:/Ruby193/bin/Ruby
    --with-thin_parser-dir
    --without-thin_parser-dir
    --with-thin_parser-include
    --without-thin_parser-include=${thin_parser-dir}/include
    --with-thin_parser-lib
    --without-thin_parser-lib=${thin_parser-dir}/lib
    --with-clib
    --without-clib
C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:461:in `try_link0'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:476:in `try_link'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:619:in `try_func'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:845:in `block in have_library'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:280:in `postpone'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from C:/Ruby193/lib/Ruby/1.9.1/mkmf.rb:840:in `have_library'
    from extconf.rb:4:in `<main>'

Voici ce que le fichier mkmf dans C:\Ruby193\lib\Ruby\gems\1.9.1\gems\thin-1.6.3\ext\thin_parser ressemble à:

"gcc -o conftest -IC:/Ruby193/include/Ruby-1.9.1/i386-mingw32 -IC:/Ruby193/include/Ruby-1.9.1/Ruby/backward -IC:/Ruby193/include/Ruby-1.9.1 -I. -DFD_SETSIZE=2048  -DFD_SETSIZE=2048  -O3 -fno-omit-frame-pointer -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c  -L. -LC:/Ruby193/lib -L.   -march=i486   -lmsvcrt-Ruby191  -lshell32 -lws2_32 -limagehlp -lshlwapi  "
checked program was:
/* begin */
1: #include "Ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: int main(int argc, char **argv)
6: {
7:   return 0;
8: }
/* end */

J'utilise Windows 7.

Pourquoi est-ce que j'obtiens l'erreur? Il y a une ligne indiquant "impossible de créer un Makefile ...", mais est-ce pertinent?

23
Generic_User_ID

Avez-vous couru:

xcode-select --install

Pour installer les outils du développeur Xcode?

27
Alex Chin

On dirait que vous manquez les devtools pour Ruby.

Vous pouvez les obtenir ici: http://rubyinstaller.org/downloads/ faites défiler jusqu'à "Kit de développement".

Téléchargez et extrayez cela où vous voulez. Ouvrez le dossier dans l'invite de commande et exécutez Ruby dk.rb init. Cela créera un fichier de configuration détaillant vos installations Ruby. Vérifiez ce fichier de configuration avant de continuer à confirmer que les chemins d'accès à votre installation Ruby sont corrects).

Exécutez maintenant Ruby dk.rb install. Cela installera le kit de développement.

Redémarrez l'invite de commande et essayez de réinstaller la gemme.

16
Cereal

J'avais ce problème sur MacOS Mojave (10.14.1). L'installation de la dernière Ruby via Homebrew et la définition de certaines variables env l'ont résolu pour moi:

export PATH="/usr/local/opt/Ruby/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/Ruby/lib"
export CPPFLAGS="-I/usr/local/opt/Ruby/include"
export PKG_CONFIG_PATH="/usr/local/opt/Ruby/lib/pkgconfig"
4
Divyanshu Rawat

Si vous êtes sous Mac OS 10.14 (Mojave), essayez

cd  /Library/Developer/CommandLineTools/Packages/;
open macOS_SDK_headers_for_macOS_10.14.pkg

Crédit à Roy Huang Référence: https://stackoverflow.com/a/55732339/1598551

3
tw airball

Cela a fonctionné pour moi
"Sudo xcode-select -switch /"

3
maheshsgr

Cela signifie que vous n'avez pas installé d'outils de compilation. Pour Mac xcode-select --install les installe. Pour Linux ou d'autres systèmes, vous pouvez utiliser des gestionnaires de packages, par exemple apt install cmake devrait installer les outils de construction nécessaires pour les systèmes ayant le gestionnaire de paquets apt.

2
Behlül Uçar