首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >gcc:错误:无法识别的命令行选项

gcc:错误:无法识别的命令行选项
EN

Stack Overflow用户
提问于 2020-06-17 15:37:42
回答 3查看 12.2K关注 0票数 2

我正在尝试创建一个u-boot镜像文件。但是我是不是有一些错误。

代码语言:javascript
复制
gcc version: 7.3.0

make PATH=/opt/CodeSourcery/Sourcery_G++_Lite/arm-2011.03-41-arm-none-linux-gnueabi:$PATH
export CROSS_COMPILE=arm-linux-gnueabihf-(or arm-none-linux-gnueabi)
make ARCH=arm xilinx_zynq_defconfig
make -j ARCH=arm UIMAGE_LOADADDR=0x8000 uImage

错误:

代码语言:javascript
复制
gcc: error: unrecognized argument in option ‘-mabi=aapcs-linux’
gcc: note: valid arguments to ‘-mabi=’ are: ms sysv
gcc: error: unrecognized command line option ‘-mlittle-endian’; did you mean ‘-fconvert=little-endian’?
gcc: error: unrecognized command line option ‘-mfpu=vfp’; did you mean ‘-mcpu=’?
  CC      scripts/mod/devicetable-offsets.s

我该怎么修复呢?有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-06-19 20:13:28

指向您想要使用的确切工具链的一种更确定的方法是在设置CROSS_COMPILE时提供其完整前缀。这将避免可能出现的与路径相关的错误,并且用于构建的确切工具链的信息将嵌入到构建脚本中。

完整示例-安装官方Arm gcc工具链,并为xilinx_zynq_virt检索/构建u-boot 20.04 (使用您自己的u-boot和defconfig):

代码语言:javascript
复制
# gcc 9.2.0
mkdir -p /opt/arm/9
wget 'https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-arm-none-eabi.tar.xz?revision=64186c5d-b471-4c97-a8f5-b1b300d6594a&la=en&hash=5E9204DA5AF0B055B5B0F50C53E185FAA10FF625'
tar Jxf gcc-arm-9.2-2019.12-x86_64-arm-none-eabi.tar.xz -C /opt/arm/9

# u-boot
wget https://github.com/u-boot/u-boot/archive/v2020.04.tar.gz
tar zxf v2020.04.tar.gz
cd u-boot-2020.04
make CROSS_COMPILE=/opt/arm/9/gcc-arm-9.2-2019.12-x86_64-arm-none-eabi/bin/arm-none-eabi- ARCH=arm mrproper xilinx_zynq_virt_defconfig all
ll -gG u-boot*
-rwxrwxr-x 1 5778348 Jun 19 08:08 u-boot*
-rwxrwxr-x 1  599172 Jun 19 08:08 u-boot.bin*
-rw-rw-r-- 1   14907 Jun 19 08:08 u-boot.cfg
-rw-rw-r-- 1    9181 Jun 19 08:09 u-boot.cfg.configs
-rwxrwxr-x 1  665132 Jun 19 08:09 u-boot.elf*
-rw-rw-r-- 1      70 Jun 19 08:09 u-boot-elf.lds
-rw-rw-r-- 1  599612 Jun 19 08:09 u-boot-elf.o
-rw-rw-r-- 1  599236 Jun 19 08:09 u-boot.img
-rw-rw-r-- 1    1626 Jun 19 08:08 u-boot.lds
-rw-rw-r-- 1  696711 Jun 19 08:08 u-boot.map
-rwxrwxr-x 1  599172 Jun 19 08:08 u-boot-nodtb.bin*
-rwxrwxr-x 1 1797626 Jun 19 08:08 u-boot.srec*
-rw-rw-r-- 1  184969 Jun 19 08:08 u-boot.sym

我希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2020-06-18 03:09:11

您的路径指向某个2011年的GCC交叉编译器。你至少需要2016年发布的《GCC 6》。请安装当前版本的GCC。

在Debian或Ubuntu上,用于主机系统的C编译器和交叉编译器是单独的包。您可以使用以下命令安装32位和64位ARM的交叉编译器:

代码语言:javascript
复制
sudo apt-get install gcc-arm-linux-gnueabihf
sudo apt-get install gcc-aarch64-linux-gnu

由于编译器安装在/usr/bin中,因此只需将CROSS_COMPILER变量设置为

代码语言:javascript
复制
export CROSS_COMPILE=arm-linux-gnueabihf-

代码语言:javascript
复制
export CROSS_COMPILE=aarch64-linux-gnu-
票数 3
EN

Stack Overflow用户

发布于 2021-04-13 20:55:47

你输入的路径正确吗?我认为你应该加上"/bin",所以应该是这样的:

代码语言:javascript
复制
export PATH=/path

…至

代码语言:javascript
复制
<your toolchain>/bin:$PATH
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62423792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档