node.js - 编译 Node 给出 “No-old-style-declaration”标志错误

标签 node.js gcc compiler-errors

我正在为外部系统(科学Linux)编译Node.js,并且在编译时遇到此错误。我已经在自述文件中检查了构建Node的先决条件,并且安装了Python,而我的make版本是3.81。我不确定为什么该标志会抛出cc1 ...

make -C out BUILDTYPE=Release V=1
make[1]: Entering directory `/home/nick/node_src/out'
...
...
...
cc '-D_LARGEFILE_SOURCE' '-D_FILE_OFFSET_BITS=64' '-DL_ENDIAN' '-DOPENSSL_THREADS' '-DPURIFY' '-D_REENTRANT' '-DOPENSSL_NO_DGRAM' '-DOPENSSL_NO_DTLS1' '-DOPENSSL_NO_SCTP' '-DOPENSSL_NO_SOCK' '-DOPENSSL_NO_RDRAND' '-DOPENSSL_NO_GOST' '-DOPENSSL_NO_HW_PADLOCK' '-DENGINESDIR="/dev/null"' '-DOPENSSLDIR="/etc/ssl"' '-DTERMIOS' -I../deps/openssl -I../deps/openssl/openssl -I../deps/openssl/openssl/crypto -I../deps/openssl/openssl/crypto/asn1 -I../deps/openssl/openssl/crypto/evp -I../deps/openssl/openssl/crypto/md2 -I../deps/openssl/openssl/crypto/modes -I../deps/openssl/openssl/crypto/store -I../deps/openssl/openssl/include -I../deps/openssl/config/k8  -Wall -Wextra -Wno-unused-parameter -pthread -m64 -Wno-missing-field-initializers -Wno-old-style-declaration -O2 -fno-strict-aliasing -fno-tree-vrp -fno-tree-sink  -MMD -MF /home/nick/node_src/out/Release/.deps//home/nick/node_src/out/Release/obj.target/openssl/deps/openssl/openssl/ssl/bio_ssl.o.d.raw  -c -o /home/nick/node_src/out/Release/obj.target/openssl/deps/openssl/openssl/ssl/bio_ssl.o ../deps/openssl/openssl/ssl/bio_ssl.c
cc1: error: unrecognized command line option "-Wno-old-style-declaration"
make[1]: ***     [/home/nick/node_src/out/Release/obj.target/openssl/deps/openssl/openssl/ssl/bio_ssl.o] Error 1
make[1]: Leaving directory `/home/nick/node_src/out'
make: *** [node] Error 2

谢谢!

最佳答案

此错误来自cc1(GCC的一部分),因此与make无关。
-W[no-]old-style-declaration警告选项是在2007年初在this GCC change中引入的,很可能最早出现在GCC 4.3中。因此,您的GCC似乎早于4.3。

您可以通过升级GCC来解决此问题,但最好还是坚持使用Scientific Linux提供的GCC。可以想象,Node.js具有一个配置选项来控制它,或者更可能的是,您可以从makefile源代码中出现的任何地方手动编辑-Wno-old-style-declaration

如果Node.js的自述文件未将GCC 4.3列为前提条件,则可能需要向Node.js维护者指出。

关于node.js - 编译 Node 给出 “No-old-style-declaration”标志错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13023239/

相关文章:

javascript - 为什么javascript中的对象没有find方法?

python - 双向 Node/python通信

c - 如何调试生成格式错误的可执行文件的实验性工具链

c++ - 为什么使用 constexpr、__PRETTY_FUNCTION__ 和 char * 的这两段代码会有不同的结果?

javascript - 嵌套的 Jade block 没有被渲染

C++析构函数过早调用

java - “找不到符号”或“无法解析符号”错误是什么意思?

angular - 导入 angular2-calendar-heatmap 导致 JIT 编译错误

c# - Roslyn 会成为 .NET 框架的一部分吗?

node.js 中的 Ajax 文件上传