GNU make 在 -I(共享目录)选项后添加白色 space
GNU make is adding white space after -I (shared directory) option
我正在尝试通过 GNU makefile 使用 armclang 编译器,但是在使用 -I 选项时这两个工具之间存在冲突。
对于 armclang 编译器,-I 表示没有 space 的 "Adds the specified directory to the list of places that are searched to find included files.Syntax -Idir"。
对于 GNU makefile ‘-I dir’ 具有相同的含义(但带有 space)。
在我的 makefile 中有以下内容:
$(aarch32_bootobj): %.o: %.s
@echo " [ASM ] $<"
@armclang --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@
当 运行 Makefile 时,我收到以下警告和错误:
armclang: warning: argument unused during compilation: '-I common/shared'
aarch32/shared/bootcode.s:32:10: error: Could not find include file 'boot_defs.hs'
其中 boot_defs.hs 存在于 common/shared
下
当 运行在 makefile 之外使用相同的 armclang 命令时,它可以工作。因此我假设 makefile 已经格式化了 -Icommon/share 选项并在 -I.
之后添加了自动 space
有什么方法可以正确运行 armclang 命令吗?在其他世界中,是否可以让 makefile 解析 -Icommon/shared 而无需任何自动格式化?
我已经尝试了很多技巧来解决这个问题,但都没有成功。
非常感谢。
GNU make 不会拆分 -Icommon/shared
选项,即使拆分了 armclang
也能解析它。如果您从 Makefile 中的 armclang
调用中删除 @
,您将确切地看到 make
做了什么并且 -Icommon/shared
参数保持不变。
你的问题是armclang
;查看智能设备上的 this bug。它不会将 -I
标志传递给它的集成汇编器。那么,解决方法应该是将 -no-integrated-as
传递给 armclang
:
@armclang -no-integrated-as --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@
如果这不起作用,请将 .include
指令替换为 #include
并将您的 asm 文件重命名为 .S
(大写 S
),这表明他们需要 C 预处理,或者传递 armclang
-x assembler-with-cpp
标志。此行为记录在案 here.
我正在尝试通过 GNU makefile 使用 armclang 编译器,但是在使用 -I 选项时这两个工具之间存在冲突。
对于 armclang 编译器,-I 表示没有 space 的 "Adds the specified directory to the list of places that are searched to find included files.Syntax -Idir"。
对于 GNU makefile ‘-I dir’ 具有相同的含义(但带有 space)。
在我的 makefile 中有以下内容:
$(aarch32_bootobj): %.o: %.s
@echo " [ASM ] $<"
@armclang --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@
当 运行 Makefile 时,我收到以下警告和错误:
armclang: warning: argument unused during compilation: '-I common/shared'
aarch32/shared/bootcode.s:32:10: error: Could not find include file 'boot_defs.hs'
其中 boot_defs.hs 存在于 common/shared
下当 运行在 makefile 之外使用相同的 armclang 命令时,它可以工作。因此我假设 makefile 已经格式化了 -Icommon/share 选项并在 -I.
之后添加了自动 space有什么方法可以正确运行 armclang 命令吗?在其他世界中,是否可以让 makefile 解析 -Icommon/shared 而无需任何自动格式化?
我已经尝试了很多技巧来解决这个问题,但都没有成功。
非常感谢。
GNU make 不会拆分 -Icommon/shared
选项,即使拆分了 armclang
也能解析它。如果您从 Makefile 中的 armclang
调用中删除 @
,您将确切地看到 make
做了什么并且 -Icommon/shared
参数保持不变。
你的问题是armclang
;查看智能设备上的 this bug。它不会将 -I
标志传递给它的集成汇编器。那么,解决方法应该是将 -no-integrated-as
传递给 armclang
:
@armclang -no-integrated-as --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@
如果这不起作用,请将 .include
指令替换为 #include
并将您的 asm 文件重命名为 .S
(大写 S
),这表明他们需要 C 预处理,或者传递 armclang
-x assembler-with-cpp
标志。此行为记录在案 here.