【问题标题】:Using cargo build --manifest-path results to greatly increases WASM binary size使用 cargo build --manifest-path 结果大大增加了 WASM 二进制文件大小
【发布时间】:2021-01-20 05:22:29
【问题描述】:

我正在使用两个不同的命令行构建相同的 Cargo.toml。这是用于构建 NEAR 协议的智能合约。

首先使用--manifest-path

cargo build --manifest-path contract/Cargo.toml --release --target wasm32-unknown-unknown
...
Finished release [optimized] target(s) in 23.25s
ls -lha contract/target/wasm32-unknown-unknown/release 
...
-rwxr-xr-x   2 moo staff 1.7M Oct  5 12:32 nep9000_pool.wasm*
-rwxr-xr-x   2 moo staff 1.8M Oct  5 12:32 nep9000_token.wasm*

二进制文件的大小为 1.8 兆字节。

然后我从 Cargo.toml 所在的文件夹中执行货物构建。

cd contract 
cargo build --release --target wasm32-unknown-unknown  
Finished release [optimized] target(s) in 22.85s
ls -lha target/wasm32-unknown-unknown/release
-rwxr-xr-x   2 moo staff 127K Oct  5 12:35 nep9000_pool.wasm*
-rw-r--r--   1 moo staff  305 Sep 30 21:09 nep9000_token.d
-rwxr-xr-x   2 moo staff 189K Oct  5 12:35 nep9000_token.wasm*

后一种方法的二进制大小要小 10 倍。

这是为什么?上面的cargo 命令有何不同?

【问题讨论】:

    标签: webassembly rust-cargo nearprotocol


    【解决方案1】:

    我会假设第二个构建选择编译标志-C link-arg=-s 而第一个没有。编译标志可以通过多种方式传递:as env variable 或作为.cargo/config 的一部分。试图弄清楚为什么货物首先忽略它可能会相当累人,我只是建议始终将其编译为RUSTFLAGS="-C link-arg=-s" cargo build --release --target wasm32-unknown-unknown

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-02
      • 1970-01-01
      • 2014-08-01
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      相关资源
      最近更新 更多