MX Linuxオペレーティングシステムを使用しています。 stm32f103c8t6 MCUを使用しようとしています。 Warren gayのユーザーマニュアル「Beginning STM32」のマニュアルに従ってstm32f103c8t6、libopencm3、FreeRTOSのgit cloneを正常にインストールしました。
ARM CROSS コンパイラをダウンロードして解凍すると、ファイルは /opt/gcc-arm フォルダに保存されました。
arm-none-eabi-gcc --version と入力すると、コマンドが見つからないというエラーが表示されます。
さらに検索して $ls -l /opt/gcc-arm/bin と入力すると、次の形式で arm-none-eabi-gcc が緑色で表示されます。
-rwxr-xr-x 2 1001 1001 1296976 2020年11月24日 arm-none-eabi-gcc
同様に、「type gcc」コマンドは、「arm-none-eabi-gcc is hashed (/opt/gcc-arm/bin/gcc)」の代わりに「gcc is /usr/bin/gcc」という出力を提供します。ユーザーマニュアル
そして、「type arm-none-eabi-gcc」コマンドは出力を「見つかりません」と表示します。
私が知っているのは、ファイルの緑はファイルが実行可能であることを意味しますが、コンピュータがコマンドを認識しない理由を説明できません。
最後の make コマンドは次のような応答を受けました。
user@mx:~/stm32f103c8t6
$ make
make -C libopencm3 TARGETS=stm32/f1
make[1]: Entering directory '/home/user/stm32f103c8t6/libopencm3'
BUILD lib/stm32/f1
CC adc.c
make[2]: arm-none-eabi-gcc: Command not found
make[2]: *** [../../Makefile.include:41: adc.o] Error 127
Failure building: lib/stm32/f1: code: 2
make[1]: *** [Makefile:79: lib] Error 1
make[1]: Leaving directory '/home/user/stm32f103c8t6/libopencm3'
make: *** [Makefile:38: libopencm3/lib/libopencm3_stm32f1.a] Error 2
答え1
[コメントでなければなりませんが、私はそのような評判がありません。]
コンパイラパスが$PATH
環境変数にないようです。
すべてが正しく機能していることを確認するには、次のものを使用する必要があります。純粋なパスまたは:
/opt/gcc-arm/bin/arm-none-eabi-gcc
または
cd /opt/gcc-arm/bin/
./arm-none-eabi-gcc #the ./ is necessary to execute from the current directory
うまくいけば(もはやコマンドが見つかりませんエラー)、問題は簡単に解決できます。 (ホームフォルダでbashをシェルとして使用しているとします。ファイルがそうでない場合、出力は次のようになります。issue.bashrc
コマンドはecho $SHELL
ありません):
PATH+=':/opt/gcc-arm/bin/'
その後、. ~/.bashrc
現在のシェルで実行するか(新しく編集したファイルを実行する)、新しい端末を開くと、コマンドが見つかります。
ノート
私はあなたがIntel / AMDシステムでクロスコンパイルをしていると仮定します(アーキテクチャは必要であり、コマンドまたはmore infoを使用して見つけるx86_64
ことができます)。この場合、クロスコンパイラを使用してx86システムでビルドし、stm32システムで実行するARM実行可能ファイルを生成できます。uname -m
uname -a
私が間違った仮定をして、あなたがクロスコンパイラを実行しようとしている場合~からstm32は必要ありません。クロスコンパイラの利点は、コンパイルしたい場合は、より強力なシステムで重い作業を実行してから、小さな組み込みシステムで実行できることです。存在するstm32は他のコンピュータに依存する必要はありません(つまり、クロスコンパイルは不要です)、そこでLinuxを実行してからローカルのgccにコンパイルしてそこから実行可能ファイルを実行します。
ノート2
コンパイラアーム -まったく-eabi-gccは、ベアメタルコード(Linuxではなく組み込みシステムで直接実行されるファームウェアなど)をコンパイルするように設計されていますが、Linux用gcc(またはクロスコンパイラarm-オペレーティングシステム-gnueabihf-gccなど)は、Linux上で実行するプログラムを構築しています。