Vitis IDE自定义IP Makefile错误(arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument)解决方法

天下苦Vitis久矣,在做开发的时候有时候会遇见自定义IP以后生成驱动的Makefile有问题,导致hello world都编译不通过的情况,Xilinx的官方论坛只给出了部分makefile解决方法,写的也不是很清楚,特此记录。

要解决的错误类似于:

1
2
3
4
"Compiling my_ip..."
arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument
arm-xilinx-eabi-gcc.exe: fatal error: no input files
compilation terminated.

首先找到这个路径

1
${hardwareplatform的名字}/zynq_fsbl/zynq_fsbl_bsp/${ps7_cortexa9_0(核心名字)}/libsrc/${(ip名字)}/src/Makefile 

替换为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
COMPILER=
ARCHIVER=
CP=cp
COMPILER_FLAGS=
EXTRA_COMPILER_FLAGS=
LIB=libxil.a
RELEASEDIR=../../../lib
INCLUDEDIR=../../../include
INCLUDES=-I./. -I${INCLUDEDIR}
INCLUDEFILES=$(wildcard *.h)
LIBSOURCES=$(wildcard *.c *.cpp)
OUTS =*.o
OBJECTS = $(addsuffix .o, $(basename $(wildcard *.c *.cpp)))
ASSEMBLY_OBJECTS = $(addsuffix .o, $(basename $(wildcard *.S)))
libs:
echo "Compiling myip"
$(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES)
$(ARCHIVER) -r ${RELEASEDIR}/${LIB} ${OBJECTS} ${ASSEMBLY_OBJECTS}
make clean
include:
${CP} $(INCLUDEFILES) $(INCLUDEDIR)
clean:
rm -rf ${OBJECTS} ${ASSEMBLY_OBJECTS}

然后重新编译,顺利的话直接就好了,不顺利的话看报错的下一句有 exiting dir xxx 来定位哪个Makefile错了,接着改。

接着build application的时候有可能会爆一个qemu_args报错:
解决方法:在hardwareplatform里面增加export/name/sw/name/qemu/qemu_args.txt 内容留空即可

最后,如果build的时候出现unreferenced Xout_32,就增加头文件 xil_io.h

这样就可以了。


Vitis IDE自定义IP Makefile错误(arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument)解决方法
https://dorapocket.github.io/2022/03/26/vitis-ide自定义ip-makefile错误(arm-xilinx-eabi-gcc-exe-error-c-invalid-argument)解决方法/
作者
Dorapocket
发布于
2022年3月26日
许可协议