Rust: ERROR_ON_UNDEFINED_SYMBOLS = 1 siempre pasado para emcc previene eficazmente cualquier enlace dinámico

Creado en 4 may. 2017  ·  1Comentario  ·  Fuente: rust-lang/rust

el siguiente código rust no se compila con el destino wasm32-unknown-emscripten

extern {
  #[link(name="env")]
  fn log_event(id: *const u8);
}

fn main() {
    unsafe { log_event(::std::ptr::null()); }
}

con

  error: unresolved symbol: log_event

corríjame si me equivoco, podría estar terriblemente mal con esto, pero #[link] sin kind=static implica un enlace dinámico, y el código anterior no debería fallar en la compilación.

En cuanto a emscripten en sí, no tiene problemas para compilar código C como este:

extern void log_event(void* ptr);

int main() {
    log_event(0);
}

con emcc <source above.c> -O3 -s WASM=1 -s SIDE_MODULE=1 -o result.wasm
produciendo una buena entrada de importación en result.wasm

  (import "env" "_log_event" (func (;0;) (type 0)))

Entonces, la pregunta es, ¿hay alguna opción para tener símbolos dinámicos en el wasm resultante? ¿O al menos anular este argumento del enlazador ERROR_ON_UNDEFINED_SYMBOLS en algún momento?

enlace de origen sería:
https://github.com/rust-lang/rust/blob/ec27aa97b921957711b96e578c7c197ff28553ac/src/librustc_back/target/wasm32_unknown_emscripten.rs#L21

C-bug O-asmjs O-wasm

Comentario más útil

@NikVolf en realidad puede anular los argumentos emcc con la ayuda de la variable de entorno EMMAKEN_CFLAGS .
(asumiendo que su nombre de archivo es main.rs )

export EMMAKEN_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" 
rustc --target=wasm32-unknown-emscripten main.rs

>Todos los comentarios

@NikVolf en realidad puede anular los argumentos emcc con la ayuda de la variable de entorno EMMAKEN_CFLAGS .
(asumiendo que su nombre de archivo es main.rs )

export EMMAKEN_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" 
rustc --target=wasm32-unknown-emscripten main.rs
¿Fue útil esta página
0 / 5 - 0 calificaciones