使用 10gen-published 包可以正常工作,但如果您真的想从源代码编译 SpiderMonkey 并支持 UFT-8:
curl -O ftp://ftp.mozilla.org/pub/mozilla.org/js/js185-1.0.0.tar.gz
tar xvzf js185-1.0.0.tar.gz
cd js-1.8.5/js/src
export CFLAGS="-DJS_C_STRINGS_ARE_UTF8"
export CXXFLAGS="-DJS_C_STRINGS_ARE_UTF8"
然后按照https://developer.mozilla.org/En/SpiderMonkey/Build_Documentation中的说明进行操作
autoconf-2.13
./configure
make
make install
cp js /usr/local/bin/
这将安装到 /usr/local/lib 中,但是 mongodb 包会在 /usr/lib(spidermonkey 包的安装位置)中查找它。因此,我们将所有安装的文件从 /usr/lib 链接到 /usr/local /lib
ln -s /usr/local/lib/libmozjs185.so /usr/lib/libmozjs185.so
ln -s /usr/local/lib/libmozjs185.so.1.0 /usr/lib/libmozjs185.so.1.0
ln -s /usr/local/lib/libmozjs185.so.1.0.0 /usr/lib/libmozjs185.so.1.0.0
ln -s /usr/local/lib/libmozjs185-1.0.a /usr/lib/libmozjs185-1.0.a
当然,您可以将它们移动到 /usr/lib 而不是符号链接,但我想让启用 utf 的库远离默认位置,以防止与默认的 spidermonkey 包发生冲突。如果没有安装 libmozjs 包,apt 会抱怨 mongodb 的依赖项不满足,所以我没有安装它。
请记住,如果 spidermonkey 软件包升级,它可以覆盖指向我们新库的符号链接(或者如果您已将它们移动到 /usr/local/lib,则这些库本身)。理想的解决方案是构建自己的包来解决依赖问题。