![如何更改我正在使用的 GCC 版本?为什么尽管 bash 告诉我找不到 gcc 命令,GCC 似乎仍然可以工作?](https://linux22.com/image/73000/%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%E6%88%91%E6%AD%A3%E5%9C%A8%E4%BD%BF%E7%94%A8%E7%9A%84%20GCC%20%E7%89%88%E6%9C%AC%EF%BC%9F%E4%B8%BA%E4%BB%80%E4%B9%88%E5%B0%BD%E7%AE%A1%20bash%20%E5%91%8A%E8%AF%89%E6%88%91%E6%89%BE%E4%B8%8D%E5%88%B0%20gcc%20%E5%91%BD%E4%BB%A4%EF%BC%8CGCC%20%E4%BC%BC%E4%B9%8E%E4%BB%8D%E7%84%B6%E5%8F%AF%E4%BB%A5%E5%B7%A5%E4%BD%9C%EF%BC%9F.png)
我试图跟随这介绍在树莓派上使用 C 语言进行裸机编程的教程。它建议的第一件事就是安装 gcc 4.7 工具链,而不是我当前安装的 4.8 版本。尽管我进行了所有的谷歌搜索,但我仍然无法完成这项工作。
我尝试使用该update-alternatives
命令,选择了 gcc-4.7,但没有成功。该命令gcc
遇到bash: gcc: command not found
错误。所以我显然不能使用gcc -v
or gcc --version
。
每当我运行生成可用内核映像文件的构建脚本时,该命令都会显示它已使用 的arm-none-eabi
4.8 版本。我完全不确定如何使用 4.7 版本来代替它。
以下是该特定脚本的内容,然后是我运行它时的输出。
#!/bin/sh
arm-none-eabi-gcc -O0 -DRPIBPLUS -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -nostartfiles -g armc-03.c -o kernel.elf
arm-none-eabi-objcopy kernel.elf -O binary kernel.img
和输出:
/usr/lib/gcc/arm-none-eabi/4.8/../../../arm-none-eabi/bin/ld: warning: cannot find entry symbol _start; defaulting to 0000000000008000
这/4.8/
是我希望您能从该命令中得到的信息,尽管我认为它会抛出该警告,因为我使用的是“意外”编译器。 (有趣的是,当我在 Pi 上测试它时,它不起作用)
在这种情况下,如何在树莓派上编译C代码以用于裸机编程时使gcc使用4.7版本?
我想补充一点,标准./configure
、make
和make install
命令也不起作用。当我cd
进入解压缩的 tarball 的目录时,运行./configure
会出现“没有此类文件或目录”错误。