Компиляция расширения v8js после сборки V8 с помощью gn build (в отличие от gyp)

Google решил отказаться от GIP-сборок V8. Рекомендуемый метод — сборка с помощью gn.

Однако расширение PHP v8js не может найти необходимые библиотеки и завершает работу с:

checking for V8 Javascript Engine... yes, shared
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking for C standard version... c++11
checking how to allow c++11 narrowing... -Wno-narrowing
checking for V8 version... NONE
configure: error: could not determine libv8 version

Что нужно сделать, чтобы скомпилировать расширение PHP v8js после компиляции V8 с помощью gn?

Спасибо!

1

Решение

После двух дней экспериментов я успешно скомпилировал v8js против V8, который был построен с помощью gn (в отличие от ныне устаревшего gyp).

Следуйте инструкциям начальной проверки https://github.com/v8/v8/wiki/Building%20with%20GN.

После tools/dev/v8gen.py x64.release шаг сделать это:

$ nano out.gn/x64.release/args.gn

Это должно выглядеть так:

is_debug = false
target_cpu = "x64"is_component_build = true
v8_enable_i18n_support = false

На данный момент я не мог понять, как правильно построить поддержку i18n.

Не уверен, если это действительно требуется, но я также обновил out.gn/x64.release/v8_build_config.json с: «v8_enable_i18n_support»: false.

Компиляция (занимает около 45 минут):

$ ninja -C out.gn/x64.release

После компиляции:

$ cp out.gn/x64.release/lib*.so /usr/lib/ && cp -R include/* /usr/include
$ cp out.gn/x64.release/natives_blob.bin /usr/lib
$ cp out.gn/x64.release/snapshot_blob.bin /usr/lib
$ cd out.gn/x64.release/obj
$ ar rcsDT libv8_libplatform.a v8_libplatform/*.o
$ echo -e "create /usr/lib/libv8_libplatform.a\naddlib /usr/local/src/v8/out.gn/x64.release/obj/libv8_libplatform.a\nsave\nend" | sudo ar -M

После этого проверьте v8js и откомпилируйте как обычно:

phpize
./configure
make && make install
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]