与WASM-LD链接WASM对象文件的错误



我正在尝试将两个简单的WASM文件与WASM-LD(LLVM WASM Linker(链接

WASM文件是从2个简单的WAT文件(MOD_A.WAT和MOD_B.WAT-参见下面的代码(中编译的。更精确:

;;mod_a.wat
(module $mod_a
  (import "mod_b" "square" (func $square (param i32) (result i32)))
  (start $start)
  ;; _start entry point expected by wasm-ld
  (func $start
    (drop (call $square (i32.const 16)))
  )
)
;;mod_b.wat
(module $mod_b
  (export "square" (func $square))
  (func $square (param $value i32) (result i32)
    (i32.mul (local.get $value) (local.get $value))
  )
)

$ wat2wasm -r ./mod_a.wat
$ wat2wasm -r ./mod_b.wat
$ wasm-ld-8 ./mod_a.wasm ./mod_b.wasm -o main.wasm
wasm-ld-8: error: entry symbol not defined (pass --no-entry to supress): _start
wasm-ld-8: error: ./mod_a.wasm: undefined symbol: square

我不太明白为什么那两个符号不确定(注意:我是命名start函数$ start还是$ _start不会改变任何事情(。当然,它不能解释为什么未识别正方形功能。

有什么想法吗?

谢谢!

wat2wasm的-r标志仅支持WASM对象文件格式的最低最小值。例如,它不支持写出符号表,这肯定会使它变得毫无用处。今天生产可链接对象文件的最佳选择是使用LLVM(使用clang或手写汇编以.s格式使用(。

相关内容

  • 没有找到相关文章

最新更新