2016-08-03 99 views
1

我得到了故宫在以下错误的nodegit安装:“C编译器不能创建可执行文件”,在故宫中libssh2安装

> [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' } 

有人可以帮助我?是否因为导致C编译器能够创建可执行文件的权限问题?

我的环境:

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

节点:v4.4.7

NPM:2.15.8

gcc -v给出:

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) 

这里是在/ home/MHU/nodegit /供应商/ libssh2的config.log的一部分,让错误:

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

看起来你没有为你的CPU架构安装编译器?你可以在你的问题中包含'gcc -v'的完整输出吗? – mscdex

+0

另外,你有'CC'环境变量集('echo $ CC')吗? – mscdex

+0

@mscdex不,我没有设置$ CC。 –

回答

1

config.log,你的问题是:

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

这似乎是一个晦涩的错误。它在关于堆栈溢出的两个问题中进行了讨论。最有希望的问题是How to fix “unrecognized option '-plugin`” when using gdc to compile D program?

要自动工具(产生config.log和朋友)解决这个问题,你需要做到以下几点:

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

然后,在Autotools的世界,你会:

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

你可以有时会因为向编译器添加标志而失控:

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

不幸的是,th在我的知识结束的地方。我不知道你应该怎么做npm。这看起来像是要回答的问题:How to pass options to dependent package installs?

相关问题