c++ - Cruz compila la biblioteca de google v8 para la frambuesa pi
raspberry-pi cross-compiling (1)
Encontré una solución gracias a publicar en v8 google group. https://groups.google.com/forum/#!topic/v8-users/LTppUbqNrzI
El problema estaba en hacer argumentos que debería ser.
make arm arm_version=6 armfpu=vfp armfloatabi=hard
Tengo un problema con la compilación cruzada de las bibliotecas de google v8 para raspberry pi, y constantemente obtengo un error de "instrucción ilegal" al compilar la muestra oficial del sitio. Estos son los pasos que seguí:
- Compilación cruzada descargada https://github.com/raspberrypi/tools/
- Clonado v8 git https://chromium.googlesource.com/v8/v8.git
- Punto CXX LINK exportado a
arm-linux-gnueabihf-g++
desde herramientas de compilación cruzada. - ejecutar
make arm.release armv7=false hardfp=on snapshot=off armfpu=vfp armfloatabi=hard -j5
- Se copió el
shell
ejecutable generado yd8
del directorio out / arm.release en pi (kernel Raspbian versión 3.6.11) y FUNCIONA. Estos pasos demuestran que la cadena de herramientas de compilación cruzada es funcional.
Se produce un problema al intentar ejecutar otro software compilado de forma cruzada que está vinculado a las bibliotecas v8. Por ejemplo, código de ejemplo de https://developers.google.com/v8/get_started#intro . El código se compila de manera cruzada con este comando (igual que el ejemplo, el compilador cambiado)
arm-linux-gnueabihf-g++ -I. hello_world.cc -o hello_world -Wl,--start-group out/x64.release/obj.target/{tools/gyp/libv8_{base,libbase,snapshot,libplatform},third_party/icu/libicu{uc,i18n,data}}.a -Wl,--end-group -lrt -pthread
Cuando copio ese código en pi y lo ejecuto, obtengo SIGILL (instrucción ilegal).
Nota: el software de compilación cruzada que no usa bibliotecas v8 funciona bien. También las bibliotecas x64 v8 en la computadora host funcionan bien.
En versiones de kernel más nuevas, shell
y d8
también lanzaban SIGILL, pero cambié a la versión anterior 3.6.11 (problemas con el nuevo kernel https://groups.google.com/forum/#!topic/v8-users/IPT9EeYK9bg ) y ellos comenzó a funcionar, pero el código de muestra compilado todavía muestra los mismos problemas.
¿Alguien tiene una experiencia similar? ¿Alguna sugerencia sobre cómo superar este problema?