debian, ubuntu, linux mint 64位 鏈接 libv8 出錯 undefined reference to icu_46
==================================================
出錯情形:
使用google document自帶的例子
g++ -Iinclude hello_world.cc -o hello_world out/x64.release/obj.target/tools/gyp/libv8_{base.x64,snapshot}.a -lpthread
報如下錯誤
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x68): undefined reference to `uloc_forLanguageTag_46'
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x86): undefined reference to `icu_46::Locale::~Locale()'
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xbd): undefined reference to `icu_46::Locale::Locale(char const*, char const*, char const*, char const*)'
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xd2): undefined reference to `icu_46::Locale::operator=(icu_46::Locale const&)'
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0xdf): undefined reference to `icu_46::Locale::~Locale()'
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x129): undefined reference to `icu_46::Locale::getBaseName() const'
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x140): undefined reference to `icu_46::Locale::Locale(char const*, char const*, char const*, char const*)'
i18n.cc:(.text._ZN2v88internal13BreakIterator23InitializeBreakIteratorEPNS0_7IsolateENS0_6HandleINS0_6StringEEENS4_INS0_8JSObjectEEES8_+0x176): undefined reference to `icu_46::Locale::~Locale()'
collect2: error: ld returned 1 exit status
出錯原因:
某些地方國際化做得不好,一開始可以考慮只是用非國際化的v8版本,在編譯v8時加選項取消國際化。
make -j4 native i18nsupport=off werror=no