Rust: ERROR_ON_UNDEFINED_SYMBOLS=1 toujours passé pour emcc empêche efficacement toute liaison dynamique

Créé le 4 mai 2017  ·  1Commentaire  ·  Source: rust-lang/rust

le code rouille suivant ne parvient pas à se compiler avec la cible wasm32-unknown-emscripten

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

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

avec

  error: unresolved symbol: log_event

corrigez-moi si je me trompe, je me trompe peut-être terriblement, mais #[link] sans kind=static implique un lien dynamique, et le code ci-dessus ne devrait pas manquer de compiler ?

Quant à emscripten lui-même, il n'a aucun problème à compiler du code C comme celui-ci :

extern void log_event(void* ptr);

int main() {
    log_event(0);
}

avec emcc <source above.c> -O3 -s WASM=1 -s SIDE_MODULE=1 -o result.wasm
produire une belle entrée d'importation dans le résultat.wasm

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

Donc, la question est, y a-t-il une option pour avoir des symboles dynamiques dans le wasm résultant ? Ou au moins remplacer cet argument ERROR_ON_UNDEFINED_SYMBOLS éditeur

le lien source serait :
https://github.com/rust-lang/rust/blob/ec27aa97b921957711b96e578c7c197ff28553ac/src/librustc_back/target/wasm32_unknown_emscripten.rs#L21

C-bug O-asmjs O-wasm

Commentaire le plus utile

@NikVolf en fait, vous pouvez remplacer les arguments emcc à l'aide de la variable d'environnement EMMAKEN_CFLAGS .
(en supposant que votre nom de fichier est main.rs )

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

>Tous les commentaires

@NikVolf en fait, vous pouvez remplacer les arguments emcc à l'aide de la variable d'environnement EMMAKEN_CFLAGS .
(en supposant que votre nom de fichier est main.rs )

export EMMAKEN_CFLAGS="-s ERROR_ON_UNDEFINED_SYMBOLS=0" 
rustc --target=wasm32-unknown-emscripten main.rs
Cette page vous a été utile?
0 / 5 - 0 notes