Народ
попенял в комментах, что libjavascriptcoregtk.so дофига зависимостей за собой тащит. Это верно, спору нет.
Подсказали обратить внимание на альтернативную реализацию Джаваскрипта от Мозиллы. На Гитхабе нашлась коллекция примеров:
github.com/mozilla-spidermonkey/spidermonkey-embedding-examplesИнтерфейс несколько тяжелее, чем у JavaScriptCore. Вот тот же пример факториала, переписанный для mozjs:
( исходный текст )
Запускаем:
$ c++ -std=c++17 factorial.cpp -o factorial `pkg-config --cflags --libs mozjs-102`
$ ./factorial
The result is: 3628800.000000
Зависимостей здесь намного меньше:
$ ldd factorial
linux-vdso.so.1 (0x0000ffffb3e22000)
libmozjs-102.so.0 => /lib/aarch64-linux-gnu/libmozjs-102.so.0 (0x0000ffffb20a0000)
libstdc++.so.6 => /lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000ffffb1e80000)
libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000ffffb1e40000)
libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffffb1c90000)
libz.so.1 => /lib/aarch64-linux-gnu/libz.so.1 (0x0000ffffb1c50000)
libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffffb1bb0000)
/lib/ld-linux-aarch64.so.1 (0x0000ffffb3de5000)
Одно важное принципиальное отличие: libjavascriptcoregtk.so с вероятностью 99% уже имеется в вашем линуксе или маке. А libmozjs.so придётся дополнительно устанавливать. Зато на маке ничего не надо менять, всё одинаково работает.