Nodejs fibjs编译错误

Nodejs fibjs编译错误

git clone https://github.com/xicilion/fibjs sh build Debug

/tmp/src/fibjs/vender/v8/src/heap/heap.cc: In member function ‘bool v8::internal::Heap::ReserveSpace(v8::internal::Heap:: Reservation*)’: /tmp/src/fibjs/vender/v8/src/heap/heap.cc:940: 错误:expected initializer before ‘:’ token /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected primary-expression at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘;’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected primary-expression at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘)’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected statement at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc: At global scope: /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input make[2]: *** [CMakeFiles/v8.dir/src/heap/heap.cc.o] 错误 1 make[1]: *** [CMakeFiles/v8.dir/all] 错误 2 make: *** [all] 错误 2


9 回复

git clone https://github.com/xicilion/fibjs sh build Debug

/tmp/src/fibjs/vender/v8/src/heap/heap.cc: In member function ‘bool v8::internal::Heap::ReserveSpace(v8::internal::Heap:: Reservation*)’: /tmp/src/fibjs/vender/v8/src/heap/heap.cc:940: 错误:expected initializer before ‘:’ token /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected primary-expression at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘;’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected primary-expression at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘)’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected statement at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc: At global scope: /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input /tmp/src/fibjs/vender/v8/src/heap/heap.cc:6275: 错误:expected ‘}’ at end of input make[2]: *** [CMakeFiles/v8.dir/src/heap/heap.cc.o] 错误 1 make[1]: *** [CMakeFiles/v8.dir/all] 错误 2 make: *** [all] 错误 2


根据您提供的信息,看起来在使用 fibjs 进行编译时遇到了一些与 V8 引擎相关的错误。这些错误通常涉及代码语法或结构上的问题,特别是在 heap.cc 文件中。让我们尝试分析并解决这个问题。

分析问题

从错误信息来看,主要的错误发生在 /tmp/src/fibjs/vender/v8/src/heap/heap.cc 文件的第 940 行和第 6275 行附近。具体错误包括:

  • 预期初始化器前的冒号 (:)
  • 期望表达式作为输入结尾
  • 缺少分号 (;)
  • 期望右括号 ()) 作为输入结尾
  • 期望语句作为输入结尾
  • 期望右大括号 (}) 作为输入结尾

解决方案

由于这些错误看起来像是语法错误,最可能的原因是文件中的语法不正确或者有未闭合的括号、花括号等。我们可以尝试以下步骤来解决这个问题:

步骤 1: 检查代码

首先,打开 /tmp/src/fibjs/vender/v8/src/heap/heap.cc 文件,并找到第 940 行和第 6275 行。检查这两行及其周围的代码,看看是否有任何语法错误,例如:

  • 未闭合的括号
  • 未闭合的花括号
  • 错误的初始化器语法

示例代码

假设第 940 行是一个函数定义,它可能缺少了某个部分。例如:

bool Heap::ReserveSpace(Reservation* reservation) {
    // 错误的初始化器语法
    : some_value(some_function())
}

正确的语法应该是:

bool Heap::ReserveSpace(Reservation* reservation) {
    // 正确的初始化器语法
    return some_value = some_function();
}

步骤 2: 更新代码

修复发现的任何语法错误,并重新运行编译命令:

git clone https://github.com/xicilion/fibjs
cd fibjs
sh build Debug

总结

通过仔细检查代码中的语法错误并进行相应的修正,可以解决编译过程中遇到的问题。如果上述方法无法解决问题,建议查看 fibjs 的官方文档或社区支持,以获取更多帮助。

我装过2,3次,都成功

新的 v8 对 gcc 版本要求较高,你查一下 gcc,要高于 4.6。

gcc -v 使用内建 specs。 目标:x86_64-redhat-linux 配置为:…/configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-languages=c,c++,objc,obj-c++,java,fortran,ada --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux 线程模型:posix gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)

嗯,版本太低了,升一下再编译。

我的才 4.2.1,都不好意思了

v8 去年上半年的版本是支持低版本 gcc 的。但是 4.2 编译 x86 版本也会运行错误。下半年开始干脆 4.6 都不能编译了。

从错误信息来看,fibjs 的编译过程中遇到了一些语法问题,特别是在 v8 源码中的 heap.cc 文件里。这通常意味着源码可能与当前使用的编译器版本不兼容。

为了帮助解决这个问题,你可以尝试以下步骤:

  1. 更新依赖项:确保你使用的是最新版本的 fibjs 和其依赖项。可以尝试拉取最新的代码并重新编译。

    git pull
    sh build Debug
    
  2. 检查编译器版本:确保你使用的编译器(如 gccclang)是最新版本。有时编译器的更新会引入新的语言特性或更严格的语法检查,导致旧代码无法编译通过。

    gcc --version
    clang --version
    
  3. 修改源码:如果上述方法都无法解决问题,你可能需要手动修复 heap.cc 文件中的错误。例如,可以尝试注释掉或修复导致错误的行:

    // 错误行:需要查看原始代码并进行适当的调整
    

如果问题依然存在,建议直接向 fibjs 项目的维护者报告这个问题,并附上完整的错误信息和环境配置,以便他们能够更好地帮助你解决问题。

回到顶部