読者です 読者をやめる 読者になる 読者になる

Mac OS X上でのv8のビルド時のリンクエラー

どのバージョンからかわかりませんが、v8をOS X上でドキュメントに書いてあるようにビルドするとコケます。 具体的には以下のようにビルドすると、

g++ -Iinclude hello_world.cc -o hello_world out/{architecture}/libv8_{base,snapshot}.a -lpthread

リンクで失敗します。

ld: symbol(s) not found for architecture x86_64

これはlibv8_base.alibv8_snapshot.a以外にもlibicudata.a, libicui18n.a, libicuuc.aなどのライブラリが必要だからです。

なのでそれらも全て一緒にビルドすればokです。

g++ -Iinclude hello_world.cc -o hello_world out/{architecture}/*.a -lpthread

もしくはスタティックライブラリのビルド時にi18nsupport=offにしておけば、libv8_base.alibv8_snapshot.aだけで問題なくビルドできます。

make x64.debug -j4 console=readline i18nsupport=off

ハマってしまったので共有。