2009-01-03 50 views
2

我在最後一個問題中沒有提供很多信息。Mac OS X上的llv8call - 第二次嘗試

我從http://code.google.com/p/llv8call/,v0.4構建了llv8call。我已經安裝了已知的依賴項,分別是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」不存在。如果這聽起來很合理,那可能是我應該開始看的地方,但我需要確認。

+1

下次編輯您的原始問題 – hop 2009-01-03 08:34:00

回答

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); 
} 

也就是說,我的朋友,是你的冒煙的槍。

0

它正在目錄/ org/coderepos中尋找名爲env的庫(即libenv.so)。

可以使/ org/coderepos並將庫複製到它,或要求您的動態鏈接器在其他地方查找/ org/coderepos內容。

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正在尋找庫。