[更新20150825:编译genmddeps.o时出现编译器-汇编器不匹配;使用的编译器是安装后的版本g++ ,即安装的Ubuntu 4.9.2-10ubuntu13 ,但所使用的汇编程序位于编译目录 ./as 中,该目录配置为 riscv64-unknown-elf**,,因此从编译器传入** --64 选项时出错。完整的命令位于文章末尾的最后一个代码块中。我还不清楚为什么会有as 的本地副本,为什么 g++ 不够聪明而不使用它.]
也许有一些简单的东西,我错了配置,但如果是这样的话,它是通过多次尝试。任何帮助都将不胜感激。
我被困在试图构建火箭芯片树的过程中,在构建riscv工具时,事情出了问题。似乎正在发生的情况是,一个非法选项正在传递给riscv汇编程序,这会导致故障:
/home/kevin/Working/rocket-chip/riscv/riscv64-unknown-elf/bin/as: unrecognized option '--64'
make[3]: *** [build/genmddeps.o] Error 1
make[2]: *** [all-gcc] Error 2
make[1]: *** [all] Error 2
make: *** [stamps/build-gcc-newlib] Error 2配置似乎并不认为它是交叉编译,如果使用riscv作为二进制,而不是系统x86_64作为二进制,我就会预料到这一点:
Configuring in ./gcc
...
checking whether we are cross compiling... no路径的设置似乎是正确的:
> echo $TOP
/home/kevin/Working/rocket-chip
> echo $RISCV
/home/kevin/Working/rocket-chip/riscv
> echo $PATH
.:~/bin:~/scripts:.:~/bin:~/scripts:/home/kevin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/kevin/Working/rocket-chip/riscv/bin(附带说明,在下载gcc-5.2.0之后,我在构建过程中看到了一些shell测试错误:
/bin/sh: 1: test: false: unexpected operator不确定这是一种症状还是已知的行为。
该系统是Ubuntu15.04运行在VMware播放器上的一个Win*盒。我正在tcsh中运行,但是在bash运行时也会发生同样的事情。在浏览riscv更改时,需要的选项似乎是-M64而不是-64,但我不确定--64来自于构建/配置文件,因为编译器的实际build命令中没有显示--64。生成日志中生成指令的完整顺序是:
make[3]: Entering directory '/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/build-gcc-newlib/gcc'
TARGET_CPU_DEFAULT="" \
HEADERS="auto-host.h ansidecl.h" DEFINES="" \
/bin/bash /home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/mkconfig.sh config.h
TARGET_CPU_DEFAULT="" \
HEADERS="options.h insn-constants.h config/elfos.h config/newlib-stdint.h config/riscv/riscv.h config/riscv/elf.h config/initfini-array.h defaults.h" DEFINES="LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3" \
/bin/bash /home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/mkconfig.sh tm.h
TARGET_CPU_DEFAULT="" \
HEADERS="config/riscv/riscv-protos.h tm-preds.h" DEFINES="" \
/bin/bash /home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/mkconfig.sh tm_p.h
TARGET_CPU_DEFAULT="" \
HEADERS="auto-host.h ansidecl.h" DEFINES="" \
/bin/bash /home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/mkconfig.sh bconfig.h
g++ -c   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc -I/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/build -I/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/../include  -I/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/../libcpp/include  \
    -o build/genmddeps.o /home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/src/newlib-gcc/gcc/genmddeps.c
Makefile:2428: recipe for target 'build/genmddeps.o' failed
make[3]: Leaving directory '/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/build-gcc-newlib/gcc'
Makefile:4112: recipe for target 'all-gcc' failed
make[2]: Leaving directory '/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/build-gcc-newlib'
Makefile:867: recipe for target 'all' failed
make[1]: Leaving directory '/home/kevin/Working/rocket-chip/riscv-tools/riscv-gnu-toolchain/build/build-gcc-newlib'
Makefile:214: recipe for target 'stamps/build-gcc-newlib' failed发布于 2015-08-25 21:37:58
将.从我的路径中删除解决了这个问题:事实证明,构建过程和目录的结构方式是g++ (为x86_64安装)运行as (刚刚为RISC-V构建)。在将来构建rocket_chip时,我将自动处理这个问题。
https://stackoverflow.com/questions/32187632
复制相似问题