我在上一个问题中没有提供很多信息。
我已经从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”不存在。如果这听起来合理,那么我可能会开始考虑这个地方,但我需要确认。
答案 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的位置。