2021.11.10現在 → M5Stack + ArduinoIDE 環境での AquesTalk ESP32 利用時におけるリンカーエラー対策(とりあえず動作させたい人向け)
はじめに
初投稿の覚書。
推奨されている方法は二の次で、とりあえず動作させたい人向けの記事。
現状、2種類の問題を確認。
1)リンク時、AquesTalk のコンパイル済みバイナリとリンクできないエラー(undefined reference to `CAqTkPicoF_SetKoe' 等)
対策:下記のURLの通り。
異なるところは、
・環境設定
・ボードマネージャ追加設定
・platform.txt のパス
2)リンカーが動作しない(cannot open linker script file esp32.rom.redefined.ld: そのようなファイルやディレクトリはありません)
対策: ボードマネージャでインストールするバージョンを古めのバージョンにする。
環境設定
追加のボードマネージャURLに M5Stack のURLを追加。
https://www.adafruit.com/package_adafruit_index.json,https://m5stack.oss-cn-shenzhen.aliyuncs.com/resource/arduino/package_m5stack_index.json
ボードマネージャ
M5Stackを追加。
注意点は2.0.0等の最新版は使わないこと(理由は不明……)。
1.0.9を使ってみたら成功した(1.0.6でも動作確認済み)。
platform.txt
編集対象の platform.txt の path は、Linux版では、
~/.arduino15/packages/m5stack/hardware/esp32/1.0.9/platform.txt
となる。
編集内容は、以下の2点。
1)compiler.libraries.ldflags を空白に設定(なければ追加)
compiler.libraries.ldflags=
2)recipe.c.combine.pattern を以下に修正
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -Wl,--start-group {object_files} "{archive_file_path}" {compiler.c.elf.libs} {compiler.libraries.ldflags} -Wl,--end-group -Wl,-EL -o "{build.path}/{build.project_name}.elf"
なお、platform.txt を直接編集せずに、上記内容を platform.local.txt に記述して、platform.txt と同じディレクトリに保存するのが推奨らしい。
compiler.libraries.ldflags=
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -Wl,--start-group {object_files} "{archive_file_path}" {compiler.c.elf.libs} {compiler.libraries.ldflags} -Wl,--end-group -Wl,-EL -o "{build.path}/{build.project_name}.elf"
これも、動作確認済み。
以上、取り急ぎご報告まで。
Author And Source
この問題について(2021.11.10現在 → M5Stack + ArduinoIDE 環境での AquesTalk ESP32 利用時におけるリンカーエラー対策(とりあえず動作させたい人向け)), 我々は、より多くの情報をここで見つけました https://qiita.com/KiKUiCHi_R1R/items/407ae044bcea96dbe377著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .