arm-none-eabi-ld:参数列表太长

arm-non-eabi-ld: Argument list too long

我正在尝试解决我的项目的问题。简而言之,我的 makefile 中有一个变量,其中包含要链接的 .o 文件的名称。变量变得太大,现在导致 Argument list too long 错误。我的 makefile 中有问题的行是:

@arm-none-eabi-ld -T layout.ld -o @$ $^ 问题是变量 $^ 扩展太大,我收到一条错误消息,指出 "arm-none-eabi-ld: Argument list too long".

我试图解决此问题的方法是将参数作为文件传递,但我不确定如何传递。 我试过的是:

@arm-none-eabi-ld -T layout.ld -o @$ <$^

@arm-none-eabi-ld -T layout.ld -o @$ | xargs `cat $^`

也尝试过:

@echo $^ >temp.txt
@arm-none-eabi-ld -T layout.ld -o @$ <temp.txt

我认为最后一个有潜力,但说 "no input files"。

我找到了解决方案:

@echo "INPUT($^)" > $(TEMP_LD)
@$(LD) $(LDFLAGS) -o $@ -T $(TEMP_LD)