tomoyuki-nakabayashi / interface202305-c3-std-rust

17 stars 0 forks source link

ラズベリーパイ4での開発環境構築 #2

Closed yu2ta7ka closed 1 year ago

yu2ta7ka commented 1 year ago

開発環境構築手順を参考に試した結果、以下エラーが発生しています。

  WARNING: destination path already exists, removing
  ERROR: tool ninja does not have versions compatible with platform linux-armel
  Error: Could not install esp-idf

対応プラットフォームが無いとのことで、現時点(2023年4月1日)、ArmのCPU環境では構築ができないと解釈すべきでしょうか? それとも何か解決策ありますでしょうか?お手数おかけしますが、ご見解いただけますと幸いです。

記事にて示していただいている、「nightly-2022-10-01-x86_64-unknown-linux-gnu」をrustup override set するとエラーになるため、近そうな「nightly-2022-10-01-armv7-unknown-linux-gnueabihf」を利用しており、ここが問題と思うのですが、どうすべきか不明です。 以下参考に下記のログを示します。 ・実行したコマンド ・ビルドエラー全文 ・toolchainの変更エラー文

【実行したコマンド】

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ rustup toolchain install nightly-2022-10-01
$ sudo apt install llvm-dev libclang-dev clang
$ cargo install ldproxy
$ rustup component add rust-src --toolchain nightly-2022-10-01-armv7-unknown-linux-gnueabihf
$ rustup override set nightly-2022-10-01-armv7-unknown-linux-gnueabihf
$ cargo install cargo-espflash

【ビルドエラー全文】

pi@raspberrypi:~/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3 $ cargo espflash --release --monitor
New version of cargo-espflash is available: v2.0.0-rc.3

Detected 2 serial ports. Ports which match a known common dev board are highlighted.

Serial port: /dev/ttyACM0
Connecting...

   Compiling esp-idf-sys v0.32.1
error: failed to run custom build command for `esp-idf-sys v0.32.1`

Caused by:
  process didn't exit successfully: `/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/target/release/build/esp-idf-sys-b572423e575816a4/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=ESP_IDF_TOOLS_INSTALL_DIR
  cargo:rerun-if-env-changed=ESP_IDF_SDKCONFIG
  cargo:rerun-if-env-changed=ESP_IDF_SDKCONFIG_DEFAULTS
  cargo:rerun-if-env-changed=MCU
  cargo:rerun-if-env-changed=ESP_IDF_SYS_ROOT_CRATE
  cargo:rerun-if-env-changed=ESP_IDF_VERSION
  cargo:rerun-if-env-changed=ESP_IDF_REPOSITORY
  cargo:rerun-if-env-changed=ESP_IDF_CMAKE_GENERATOR
  cargo:rerun-if-env-changed=IDF_PATH
  cargo:rerun-if-env-changed=EXTRA-COMPONENTS
  cargo:rerun-if-env-changed=ESP_IDF_COMPONENTS
  IDF_PYTHON_ENV_PATH=/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/python_env/idf4.4_py3.7_env
  PATH=/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin:/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/python_env/idf4.4_py3.7_env/bin:/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/esp-idf/v4.4.1/tools:$PATH
  Skipping riscv32-esp-elf@esp-2021r2-patch3-8.4.0 (already installed)
  Installing cmake@3.20.3
  file cmake-3.20.3-Linux-armv7l.tar.gz is already downloaded
  Extracting /home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/dist/cmake-3.20.3-Linux-armv7l.tar.gz to /home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/tools/cmake/3.20.3

  --- stderr
  Build configuration: BuildConfig {
      esp_idf_tools_install_dir: None,
      esp_idf_sdkconfig: None,
      esp_idf_sdkconfig_defaults: Some(
          [
              "/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/./sdkconfig.defaults",
          ],
      ),
      mcu: None,
      native: NativeConfig {
          esp_idf_version: Some(
              Tag(
                  "v4.4.1",
              ),
          ),
          esp_idf_repository: None,
          esp_idf_cmake_generator: None,
          idf_path: None,
          extra_components: [],
          esp_idf_components: None,
      },
      esp_idf_sys_root_crate: None,
  }
  Using managed esp-idf repository: RemoteSdk { repo_url: None, git_ref: Tag("v4.4.1") }
  Using esp-idf v4.4.1 at '/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/esp-idf/v4.4.1'
  WARNING: tool cmake version 3.20.3 is installed, but returned non-zero exit code (1) with error message:
  /home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/tools/cmake/3.20.3/bin/cmake: /lib/arm-linux-gnueabihf/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by /home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/tools/cmake/3.20.3/bin/cmake)

  WARNING: destination path already exists, removing
  ERROR: tool ninja does not have versions compatible with platform linux-armel
  Error: Could not install esp-idf

  Caused by:
      command '"/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/python_env/idf4.4_py3.7_env/bin/python" "/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/esp-idf/v4.4.1/tools/idf_tools.py" "--idf-path" "/home/pi/Work/InterfaceSpecial2/interface202305-c3-std-rust/hello_c3/.embuild/espressif/esp-idf/v4.4.1" "install" "riscv32-esp-elf" "cmake" "ninja"' exited with non-zero status code 1

【toolchainの変更エラー文】

pi@raspberrypi:~/Work/InterfaceSpecial2 $ rustup override set nightly-2022-10-01-x86_64-unknown-linux-gnu
 info: using existing install for 'nightly-2022-10-01-x86_64-unknown-linux-gnu'
 info: override toolchain for '/home/pi/Work/InterfaceSpecial2' set to 'nightly-2022-10-01-x86_64-unknown-linux-gnu'

   nightly-2022-10-01-x86_64-unknown-linux-gnu unchanged - (error reading rustc version)
tomoyuki-nakabayashi commented 1 year ago

お試しいただきありがとうございます。 前提として、ラズパイでは動作確認していないので、動作の保証はできかねるのですが、わかる範囲でコメントさせていただきますね。

見えてるエラーでは libstdc++ が cmake が想定しているものより古いか、存在していないようです。これだけなら gcc のバージョンアップすると解決するかもしれません。

https://stackoverflow.com/questions/63190229/glibcxx-3-4-26-not-found-running-cross-complied-program-on-beaglebone

もしくは、FAQ に追加しましたが、パッケージが不足している可能性があるので、こちらのコマンド実行すればいけたりするでしょうか (続くエラーで ninja がないと言われているため) 。

$ sudo apt install -y git curl gcc ninja-build cmake libudev-dev python3 python3-pip libusb-1.0-0 libssl-dev pkg-config libtinfo5
yu2ta7ka commented 1 year ago

早速のご回答ありがとうございます。 >gcc のバージョンアップすると解決するかもしれません。 gccのバージョンアップを試みましたが、最新版であるとなってしまいました。またパッケージ追加もしましたが、結果変わらずでした。そのため、ラズパイだと環境が不十分なように思いました。

ラズパイではなく、x86_64アーキテクチャのLinux環境を用意するようにしたいと思います。

$ sudo apt install libstdc++6
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
libstdc++6 はすでに最新バージョン (8.3.0-6+rpi1) です。