我正在尝试遵循此处找到的 Google V8 的基本“hello world”示例。我在 Ubuntu 13.10,gcc 版本 4.8.1;这应该是直截了当的,不是吗?
在构建 v8 本身并创建 hello world .cpp 文件后,我运行(正如谷歌所建议的那样)
**更新:好的,根据我对下面接受的答案的评论,我无意中并没有完全按照 Google 的建议运行它,因为我认为文件名中的大括号是指示读者选择一个选项,而不是 语法那 g++ 会理解的。尽管如此,它仍然不起作用,除非在下面的答案中建议添加
g++ -Iinclude helloworld.cpp -o hello_world out/x64.debug/obj.target/tools/gyp/libv8_base.x64.a -lpthread
并被编译错误轰炸。这里要打印的太多了,但几乎所有的错误都是以下形式:
undefined reference to 'icu_46 ...'
例如(一些示例行)
/home/ray/Playground/v8/out/../src/i18n.cc:138: undefined reference to `icu_46::UnicodeString::~UnicodeString()'
/home/ray/Playground/v8/out/../src/i18n.cc:125: undefined reference to `icu_46::UnicodeString::~UnicodeString()'
/home/ray/Playground/v8/out/../src/i18n.cc:147: undefined reference to `icu_46::UnicodeString::~UnicodeString()'
经过大量谷歌搜索后,我可以弄清楚这与称为 ICU 的东西有关(请参阅http://userguide.icu-project.org/howtouseicu)但为什么我会收到错误,以及我能做些什么,我不知道。
虽然大多数错误与 icu_46 相关,但也有一些类似的错误,来自“bootstrapper.o”:
/home/ray/Playground/v8/out/x64.debug/obj.target/v8_base.x64/src/bootstrapper.o: In function `v8::internal::Bootstrapper::NativesSourceLookup(int)':
/home/ray/Playground/v8/out/../src/bootstrapper.cc:77: undefined reference to `v8::internal::NativesCollection<(v8::internal::NativeType)0>::GetBuiltinsCount()'
/home/ray/Playground/v8/out/../src/bootstrapper.cc:81: undefined reference to `v8::internal::NativesCollection<(v8::internal::NativeType)0>::GetRawScriptSource(int)'
/home/ray/Playground/v8/out/x64.debug/obj.target/v8_base.x64/src/bootstrapper.o: In function `v8::internal::Genesis::CompileBuiltin(v8::internal::Isolate*, int)':
/home/ray/Playground/v8/out/../src/bootstrapper.cc:1448: undefined reference to `v8::internal::NativesCollection<(v8::internal::NativeType)0>::GetScriptName(int)'
我无休止地在谷歌上搜索,发现其他人遇到了这个问题但没有解决方案的迹象。任何帮助将不胜感激。谢谢你。