Makefile GNU make在-I(共享目录)选项后添加空白
我试图通过GNU makefile使用armclang编译器,但在使用-I选项时,这两个工具之间存在冲突 对于armclang编译器,-I表示“将指定的目录添加到搜索所包含文件的位置列表中。Syntax-Idir”,不带空格 对于GNU makefile,'-I dir'具有相同的含义(但带有空格) 在我的makefile中,我有以下内容:Makefile GNU make在-I(共享目录)选项后添加空白,makefile,arm,gnu-make,armclang,Makefile,Arm,Gnu Make,Armclang,我试图通过GNU makefile使用armclang编译器,但在使用-I选项时,这两个工具之间存在冲突 对于armclang编译器,-I表示“将指定的目录添加到搜索所包含文件的位置列表中。Syntax-Idir”,不带空格 对于GNU makefile,'-I dir'具有相同的含义(但带有空格) 在我的makefile中,我有以下内容: $(aarch32_bootobj): %.o: %.s @echo " [ASM ] $<" @armclang --targe
$(aarch32_bootobj): %.o: %.s
@echo " [ASM ] $<"
@armclang --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@
其中boot_defs.hs位于公共/共享目录下
在makefile外部运行相同的armclang命令时,它会工作。因此,我假设makefile已经格式化了-Icommon/share选项,并在-I之后添加了自动空间
有没有办法正确运行armclang命令?在其他情况下,是否可以让makefile在不进行任何自动格式化的情况下解析-Icommon/shared
我已经尝试了很多技巧来解决这个问题,但没有成功
非常感谢。GNU make没有拆分
-Icommon/shared
选项,即使它拆分了armclang
也可以解析它。如果从Makefile中的armclang
调用中删除@
,您将确切看到make
的作用,并且-Icommon/shared
参数保持不变
您的问题在于armclang
;请参见跟踪器上的。它不会将-I
标志传递给它的集成汇编程序。因此,解决方法应该是将-no integrated as
传递给armclang
:
@armclang -no-integrated-as --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@
@armclang-no integrated as--target=armv8a arm none eabi-Icommon/shared-c$<-o$@
如果不起作用,用
#include
替换.include
指令,或者将asm文件重命名为.S
(大写S
),这表示它们需要C预处理,或者用cpp标志传递-x汇编程序。此行为已记录在案。非常感谢。这是一个伟大的分析。armclang版本6.01(我必须使用的版本)不支持“-no integrated as”,而带cpp的-x汇编程序正在工作。
@armclang -no-integrated-as --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@