extensions extensiones chrome añadir agregar administrar google-chrome-extension google-nativeclient

google-chrome-extension - añadir - extensiones chrome android



Extensión de Google Chrome usando NaCL con una biblioteca externa (2)

Estoy desarrollando una extensión de Google Chrome usando el NaCL. Es genial y fácil de usar, pero tengo una duda.

Mi extensión necesita el GPGME (GnuPG Made Easy), así que compilo esa biblioteca con la opción ''--enable-shared'' y agregué la biblioteca al archivo .mnf:

{ ... "files": { "libgpgme.so": { "x86-64": { "url": "libs/libgpgme.so" }, "x86-32": { "url": "libs/libgpgme.so" } } ... }

También actualizo el archivo MAKE con la opción ''-lgpgme'' pero cuando compilo mi .nexe tengo el siguiente error: "libgpgme.so: archivo no reconocido: formato de archivo no reconocido".

Entonces, mis preguntas son:

  1. ¿Puedo usar una biblioteca externa con mi proyecto?
  2. ¿Cómo puedo hacer esto?

- Saludos, José


Primero debe portar libgpgme a NaCl. Es decir, libgpgme debería compilarse mediante el compilador de NaCl, no como un compilador de Linux.

GPGME usa configure. Por lo tanto, la migración normalmente se hace pasando las secuencias de comandos de envolvente como compilador. Estos scripts reemplazan los programas NaCl producidos por el compilador NaCl con un script que los invoca a través de sel_ldr. De esta forma configure puede ejecutar programas NaCl compilados como los normales de Linux.


Debido a que el entorno limitado interno de Native CLient depende de la validación del binario, debe compilar libgpgme con las herramientas de Native Client. En general, Native Client necesita validar cualquier código antes de que se ejecute, incluidas las bibliotecas, ya sea que estén vinculadas estática o dinámicamente. Con mucho, la forma más fácil de crear binarios que se pueden validar es utilizando los compiladores de Native Client.

Porting a Native Client: como libgpgme usa autotools, y en particular configure, tendrá que anunciarles la plataforma NaCl agregando una sección como esta en la parte basic_machine del archivo config.sub, que debería residir en algún lugar de libgpgme. árbol fuente:

nacl*) basic_machine=i686-pc os=-nacl ;;

y agregando

-nacl*

a la sección del sistema operativo del mismo archivo. Un ejemplo de un puerto particularmente limpio es libogg. Puede ver la totalidad del parche en http://code.google.com/p/naclports/source/browse/trunk/src/libraries/libogg-1.1.4/nacl-libogg-1.1.4.patch . (Estrictamente hablando, config.sub se genera desde configure.in, pero a menudo es más conveniente editar config.sub).

El primer paso es más importante que la migración, por lo que le siguen algunas guías y sugerencias sobre los puertos existentes para darle una idea de cómo se hace.

Guías: para obtener más información, hay varios exámenes post mortem en https://developers.google.com/native-client/community/developers . En particular, el de XaoS en https://developers.google.com/native-client/community/porting/xaos contiene una breve sección sobre autotools.

Puertos existentes: Además, hay un repositorio basado en la comunidad para Native Client llamado naclports. Contiene varias bibliotecas que ya han sido portadas, pero desafortunadamente aún no es libgpgme. Puede ver la lista de bibliotecas en naclports en http://code.google.com/p/naclports/source/browse/trunk/src/libraries/ . Si bien contiene ejemplos útiles de cómo hacer puertos, naclports no es para los pusilánimes, ya que a menudo se rompe y, dado que se mantiene como voluntario / mejor esfuerzo, puede llevar tiempo solucionarlo.