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?
Avez-vous couru:
xcode-select --install
Pour installer les outils du développeur Xcode?
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.
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"
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
Cela a fonctionné pour moi
"Sudo xcode-select -switch /"
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.