Iam使用MX linux操作系统。我正在尝试使用stm32f103c8t6单片机。从沃伦·盖伊的用户手册开始,我成功地安装了stm32f103c8t6、libopencm3和FreeRTOS的git克隆。
当我下载和解压缩手臂交叉编译器时,文件保存在/opt/gcc-arm文件夹下。
在输入手臂-无-eabi-gcc-版本时,显示的是命令未找到错误。
在进一步探索并键入$ ls、-l /opt/gcc-arm/bin之后,它以以下绿色格式列出了arm-none-eabi-gcc
-rwxr-xr-x2 1001 1001 1296976 2020年11月24日arm-无-eabi-gcc
类似地,“类型gcc”命令给出输出的方式是'gcc is /usr/bin/arm‘,而不是像提到的用户手册中提到的’arm-none eabi- Similarly‘(/opt/arm/bin/)。
“输入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发布于 2021-07-23 11:06:07
看起来编译器的路径不在您的$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如果这有效(没有更多的命令没有找到错误),那么问题很容易解决:添加.bashrc的末尾(在主文件夹中,我假设您使用bash作为shell,如果文件不存在,则发布命令echo $SHELL的输出):
PATH+=':/opt/gcc-arm/bin/'然后从当前的shell执行. ~/.bashrc (运行刚编辑的文件),或者只是打开一个新的终端,您现在应该能够找到这个命令了。
注意
我假设您是从英特尔/AMD机器交叉编译的(体系结构应该是x86_64,您可以通过命令uname -m或更多的信息uname -a找到它)。在本例中,您使用交叉编译器在x86机器上构建并生成ARM可执行文件,以便在您的stm32机器上运行。
如果我做了错误的假设,而你试图从stm32运行交叉编译器,那就不要。交叉编译器的优点是在功能更强大的机器上运行,并在您的小型嵌入式系统上运行,如果您想在stm32上编译而不依赖另一台计算机(即没有交叉编译),并且在那里运行linux,那么只需使用本地的gcc编译并在那里运行可执行文件即可。
注2
编译器arm-- NOT -eabi- gcc的目的是编译裸代码(例如,直接在嵌入式系统上运行的固件,而不是在linux上运行),而linux的gcc(或者交叉编译器arm--例如linux-gnueabihf)正在构建在linux上运行的程序。
https://unix.stackexchange.com/questions/659606
复制相似问题