PlatformIOで書き込めませんでした記録
/.pio/build/nucleo_f446re/stm32f446xe.ld.link_script.ld: Invalid argument
collect2.exe: error: ld returned 1 exit status
*** [.pio\build\nucleo_f446re\firmware.elf] Error 1
このようなエラーが書き込み時、ビルド時にでてきて書き込み等ができませんでした。解決した方法をメモとして記録しておきます。
言われたこと
もしかしたらmain.cpp
(メインとなるソースファイル)がプロジェクト内に複数あるかも
プロジェクトの最上位層(.pio
が入っているフォルダ)で次のコマンドを実行。それにより1つしかプロジェクト内にないことが判明。
ls -laR . | grep main
実行結果
-rw-r--r-- 1 [User] 197609 912 Jun 7 09:23 main.cpp
を得た。これによりこの階層以下にmain
を含むファイルが1つしかないことが分かる。
参照しているライブラリ等と同じ名前のファイルが存在してるかも
#include <mbed.h>
を#include "mbed.h"
に変更してみてやってみたけど何も変わらなかった。
解決した方法
単純にプロジェクトを置いてる場所が悪かった。今で置いていたところはPC/d/学校のOneDrive/gitリポジトリ/
に置いていて多分学校のOneDriveがとても長いし空白を含んでいるからだめだったのかと思う。
OneDriveの中にローカルリポジトリを置くなんて頭悪いことしないように!
変更後
ローカルリポジトリをユーザー直下に置いてみた。これで解決したけどwindowsの場合はユーザーフォルダがPC/Windows/ユーザー/[User Name]/
みたいに日本語になっていると思われるのでこれでもだめだったらWindowsとか別のUSBとかにいれるのをおすすめする。基本的にファイル名やフォルダ名を半角英数字のみで構成することをとてもおすすめするいい経験となった。