3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Slint の STM32 のビルドが Cargo 1.88 で壊れました

Posted at

はじめに

この記事は Slint Advent Calendar 2025 17日目の記事です。

Slint の STM32 のビルドが通らなかった

EdgeTech+ 2025 の準備で STM32H735G-DKprinterdemo_mcu をビルドしました。

ドキュメントに記載のあるように 以下のコマンドで完了するはずでした。

CARGO_PROFILE_RELEASE_OPT_LEVEL=s CARGO_TARGET_THUMBV7EM_NONE_EABIHF_RUNNER="probe-rs run --chip STM32H735IGKx" cargo run -p printerdemo_mcu --no-default-features  --features=mcu-board-support/stm32h735g --target=thumbv7em-none-eabihf --release

すると、悲しいことに以下のエラーが発生しました。

error: linking with `rust-lld` failed: exit status: 1
  = note: rust-lld: error: undefined symbol: __e_slint_assets
          >>> referenced by printerdemo_mcu...

          rust-lld: error: undefined symbol: __s_slint_assets
          >>> referenced by printerdemo_mcu...

          rust-lld: error: undefined symbol: __si_slint_assets
          >>> referenced by printerdemo_mcu...

examples/mcu-board-support/stm32h735g/memory.x で定義されている .slint_assets が未定義なんだけど?って言っています。

バグレポを書いた

Claude Code といろいろ相談し原因を発見し、以下のバグレポを作成しました。

Cargo 側の変更 の影響を受け、slint が依存している ft5336 クレートなぜか含まれている memory.x が優先的に利用されてしまっているようです。

修正をした

詳細は上記のバグレポを参照してほしいのですが、ft5336 側を直しても取り込まれる可能性が微妙で、しかもこのクレート以外にもこういうことは起こりうるというような相談をし、 Slint 側で memory.x を提供している場合にはそれを明示的に利用するパッチ を作成し、本体に取り込んでもらいました。

おわりに

1年前にこのボードで遊んだときは問題なく動いていたのですが、開発が活発に進んでいる場所ではいろんなことがあるものです。みなさんも色々試してうまくいかなかったらバグレポ書いたり直したりしましょう!

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?