在nodegit的npm安装期间出现以下错误:
> [email protected] preinstall /home/mhu/nodegit
> node lifecycleScripts/preinstall
[nodegit] Running pre-install script
[nodegit] npm@2 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编译器能够创建可执行文件?
我的环境:
操作系统:
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 / vendor / 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
最佳答案
在config.log
中,您的问题是:
/usr/bin/ld: unrecognized option '-plugin'
这似乎是一个模糊的错误。它在有关堆栈溢出的两个问题中进行了讨论。最有前途的问题是How to fix “unrecognized option '-plugin`” when using gdc to compile D program?。
要在Autotools(产生
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
不幸的是,这就是我的知识的终点。我不知道您应该为npm做些什么。这看起来像是要寻求答案的问题:How to pass options to dependent package installs?
关于node.js - npm安装期间,libssh2中的“C编译器无法创建可执行文件”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38751514/