2016-08-03 17 views
1

habe ich die folgende Fehlermeldung während npm von nodegit installieren:„C-Compiler kann nicht ausführbare Dateien erstellen“ in libssh2 während npm installieren

> [email protected] preinstall /home/mhu/nodegit 
> node lifecycleScripts/preinstall 

[nodegit] Running pre-install script 
[nodegit] [email protected] installed, pre-loading required packages 
[nodegit] Configuring libssh2. 
{ [Error: Command failed: /bin/sh -c /home/mhu/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/mhu/nodegit/vendor/openssl/openssl 
configure: error: in `/home/mhu/nodegit/vendor/libssh2': 
configure: error: C compiler cannot create executables 
See `config.log' for more details 
] 
    killed: false, 
    code: 77, 
    signal: null, 
    cmd: '/bin/sh -c /home/mhu/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/mhu/nodegit/vendor/openssl/openssl' } 
configure: error: in `/home/mhu/nodegit/vendor/libssh2': 
configure: error: C compiler cannot create executables 
See `config.log' for more details 

[nodegit] ERROR - Could not finish preinstall 
{ [Error: Command failed: /bin/sh -c /home/mhu/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/mhu/nodegit/vendor/openssl/openssl 
configure: error: in `/home/mhu/nodegit/vendor/libssh2': 
configure: error: C compiler cannot create executables 
See `config.log' for more details 
] 
    killed: false, 
    code: 77, 
    signal: null, 
    cmd: '/bin/sh -c /home/mhu/nodegit/vendor/libssh2/configure --with-libssl-prefix=/home/mhu/nodegit/vendor/openssl/openssl' } 

Kann jemand mir dabei helfen? Liegt es daran, dass ein Berechtigungsproblem dazu geführt hat, dass der C-Compiler ausführbare Dateien erstellt hat?

meiner Umgebung:

os: centos-release-6-8.el6.centos.12.3.x86_64

gcc: 4.9.1

openssl: openssl-1.0.1e-48.el6.x86_64

libssh2: libssh2-1.4.2-2.el6_7.1.x86_64

Knoten: v4.4.7

npm: 2.15.8

gcc -v gibt:

Using built-in specs. 
COLLECT_GCC=gcc 
COLLECT_LTO_WRAPPER=/packages/encap/gcc-4.9.1/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.9.1/lto-wrapper 
Target: x86_64-unknown-linux-gnu 
Configured with: ../gcc-4.9.1/configure --enable-languages=c,c++,fortran --enable-shared --disable-libstdcxx-pch --enable-lto --enable-libgomp --enable-__cxa_atexit --enable-tls --with-gmp --with-mpfr --with-mpc --with-libelf 
Thread model: posix 
gcc version 4.9.1 (GCC) 

Hier ist der Teil in config.log in/home/mhu ist/nodegit/Verkäufer/libssh2, die Fehler gibt:

configure:3429: $? = 0 
configure:3418: gcc -v >&5 
Using built-in specs. 
COLLECT_GCC=gcc 
COLLECT_LTO_WRAPPER=/packages/encap/gcc-4.9.1/bin/../libexec/gcc/x86_64-unknown-linux-gnu/4.9.1/lto-wrapper 
Target: x86_64-unknown-linux-gnu 
Configured with: ../gcc-4.9.1/configure --enable-languages=c,c++,fortran --enable-shared --disable-libstdcxx-pch --enable-lto --enable-libgomp --enable-__cxa_atexit --enable-tls --with-gmp --with-mpfr --with-mpc --with-libelf 
Thread model: posix 
gcc version 4.9.1 (GCC) 
configure:3429: $? = 0 
configure:3418: gcc -V >&5 
gcc: error: unrecognized command line option '-V' 
gcc: fatal error: no input files 
compilation terminated. 
configure:3429: $? = 1 
configure:3418: gcc -qversion >&5 
gcc: error: unrecognized command line option '-qversion' 
gcc: fatal error: no input files 
compilation terminated. 
configure:3429: $? = 1 
configure:3449: checking whether the C compiler works 
configure:3471: gcc -I/home/mhu/nodegit/vendor/openssl/openssl/include conftest.c >&5 
/usr/bin/ld: unrecognized option '-plugin' 
/usr/bin/ld: use the --help option for usage information 
collect2: error: ld returned 1 exit status 
configure:3475: $? = 1 
configure:3513: result: no 
configure: failed program was: 
| /* confdefs.h */ 
| #define PACKAGE_NAME "libssh2" 
| #define PACKAGE_TARNAME "libssh2" 
| #define PACKAGE_VERSION "-" 
| #define PACKAGE_STRING "libssh2 -" 
| #define PACKAGE_BUGREPORT "[email protected]" 
| #define PACKAGE_URL "" 
| #define PACKAGE "libssh2" 
| #define VERSION "-" 
| /* end confdefs.h. */ 
| 
| int 
| main() 
| { 
| 
| ; 
| return 0; 
| } 
configure:3518: error: in `/home/mhu/nodegit/vendor/libssh2': 
configure:3520: error: C compiler cannot create executables 
See `config.log' for more details 
+0

Es scheint, als ob Sie keinen Compiler für Ihre CPU-Architektur installiert haben? Kannst du die volle Ausgabe von 'gcc -v' in deine Frage aufnehmen? – mscdex

+0

Haben Sie auch die 'CC'-Umgebungsvariable gesetzt (' echo $ CC')? – mscdex

+0

@mscdex nein Ich habe $ CC nicht gesetzt. –

Antwort

1

Aus config.log, Ihr Problem ist:

/usr/bin/ld: unrecognized option '-plugin' 

Dies scheint ein unklarer Fehler zu sein. Es wird in zwei Fragen zu Stack Overflow diskutiert. Die vielversprechendste Frage ist How to fix “unrecognized option '-plugin`” when using gdc to compile D program?.

Um dies zu beheben, in Autotools (die config.log und Freunde produziert), müssen Sie folgendes tun:

export CPPFLAGS="-fno-use-linker-plugin" 
export CFLAGS="-fno-use-linker-plugin" 
export CXXFLAGS="-fno-use-linker-plugin" 

Dann wird in der Autotools Welt, würden Sie:

./configure --with-libssl-prefix=/home/mhu/nodegit/vendor/openssl/openssl ... 

Sie können manchmal mit dem Hinzufügen der Flagge zum Compiler wegkommen:

export CC=gcc -fno-use-linker-plugin 
export CXX=g++ -fno-use-linker-plugin 

Leider Th Dort endet mein Wissen. Ich weiß nicht, was Sie tun sollten für npm. Das sieht wie die Frage aus, um die Antwort zu beantworten: How to pass options to dependent package installs?