llv8call在Mac OS X上 - 第二次尝试

时间:2009-01-03 04:56:11

标签: macos

我在上一个问题中没有提供很多信息。

我已经从http://code.google.com/p/llv8call/创建了llv8call,v0.4。我已经安装了已知的依赖项,即libxml-2.0和libreadline。我的开发系统是Mac OS X 10.5。 llv8call是用Scons构建的。

当我尝试通过./llv8call运行llv8call时,我收到此错误:

library loading error: org.coderepos.env is not found in : (loadBinary)

我不确定如何解决此错误。作者还没有回复我。我需要一些关于如何解决这个问题的提示,而不是一个明确的答案,不过如果有人有一个非常受欢迎。

文件安装在/ usr / local / llv8call。 llv8call / lib / llv8call / org / coderepos下有一个目录结构,但它不包含“env”目录。我的第一个猜测是,它在org.coderepos.env中寻找的任何库都应该在这条路径中,但“env”不存在。如果这听起来合理,那么我可能会开始考虑这个地方,但我需要确认。

3 个答案:

答案 0 :(得分:1)

你的直觉似乎是正确的。做一个grep:

grep -r "org.coderepos" *|less

我看到它检查org.coderepos下的许多“库”。此外,在preload_builtin_classes函数的src / main.cc中,我们看到:

Handle<Value> args[1];
args[0] = String::New("org.coderepos.fs");
loadBinary->Call(v8ext, 1, args);
args[0] = String::New("org.coderepos.env");
loadBinary->Call(v8ext, 1, args);

if (try_catch.HasCaught()) {
    String::Utf8Value error(try_catch.Exception());
    fprintf(stderr, "library loading error: %s\n", *error);
    exit(2);
}

那,我的朋友,是你的吸烟枪。

答案 1 :(得分:0)

它正在目录/ org / coderepos中寻找一个名为env的库(即libenv.so)。

make / org / coderepos并将库复制到其中,或者让动态链接器在其他地方查找/ org / coderepos内容。

答案 2 :(得分:0)

我通过从llv8call源目录的顶级目录执行以下操作来修复此问题(在运行scons以构建所有内容之后):

mkdir -p out/lib/llv8call/org/coderepos
find ext -name \*.dylib -exec cp {} out/lib/llv8call/org/coderepos \;

“dtruss -f test.sh”有助于找到v8寻找libs的位置。