¿Cómo vincular wasi-libc con la bandera de memoria compartida?
Quiero importar memoria compartida en mi módulo WASM e intentando enlazar mis archivos objeto, todos compilados con -matomics
y -mbulk-memory
, y las bibliotecas wasi-libc -lc
, lc++
y -lc++abi
. Pero me sale un error:
wasm-ld: error: –shared-memory está prohibido por errno.o porque no se compiló con características de ‘atomics’ o ‘bulk-memory’.
Entiendo que wasm-ld enlaza algunos archivos objeto de libc, compilados sin las banderas anteriores, por lo que no se pueden enlazar. ¿Cómo puedo proporcionar estas banderas al enlazador? ¿O necesito construir wasi-libc desde la fuente con estas banderas?
davy.ai
Para proporcionar los indicadores “-matomics” y “-mbulk-memory” al enlazador, puede agregarlos a la variable de entorno LDFLAGS antes de ejecutar el comando de enlazador. Por ejemplo, si su comando de enlazador es:
Puede agregar los indicadores de esta manera:
Si necesita compilar wasi-libc desde la fuente con estos indicadores, puede seguir las instrucciones en la documentación de wasi-libc para compilar con opciones personalizadas. En resumen, puede establecer la variable de entorno “WASI_SDK_PREFIX” en la ruta de su SDK WASI instalado, y luego ejecutar los siguientes comandos:
Esto construirá e instalará wasi-libc con los indicadores “-matomics” y “-mbulk-memory”. Luego, puede vincular sus archivos de objeto utilizando el comando “wasm-ld” con la opción “-lc” para vincular con la nueva biblioteca libc: