Cómo construir el complemento de C ++ de nodejs en función de una biblioteca compartida con ubicación relativa

Estoy tratando de construir un node.js C ++ usando node-gyp pero no puedo entender cómo especificar -Wl,-rpath,$ORIGIN para que cuando se cargue desde un nodo pueda encontrar una biblioteca de objetos compartida que esté en el mismo directorio como addon.node .

He intentado configurar mi binding.gyp esta manera:

 "libraries": [ "-L../../install_release_x64/", "-llibppp" ], "ldflags": [ "-Wl,-rpath,'$ORIGIN'" ], "cflags_cc": [ "-fexceptions", "-fPIC", "-Wno-unknown-pragmas" ] 

pero cuando ejecuto $ readelf -d addon.node el resultado es así:

  Dynamic section at offset 0x7d10 contains 29 entries: Tag Type Name/Value 0x0000000000000001 (NEEDED) Shared library: [liblibppp.so] 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x000000000000000e (SONAME) Library soname: [addon.node] 0x000000000000000f (RPATH) Library rpath: [RIGIN] 0x000000000000000c (INIT) 0x37a0 

El resultado esperado es la Library rpath: [$ORIGIN]

¿Alguna idea de qué está haciendo node-gyp a mi palabra clave especial $ORIGIN ?

Parece que tengo que escapar de esta manera:

 "ldflags": [ "-Wl,-rpath,'$$ORIGIN'" ], 

Ahora funciona como se esperaba.

Intereting Posts