首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU是在-I (共享目录)选项之后添加空白

GNU是在-I (共享目录)选项之后添加空白
EN

Stack Overflow用户
提问于 2015-05-15 07:22:10
回答 1查看 173关注 0票数 1

我试图通过使用armclang编译器,但在使用-I选项时,这两个工具之间存在冲突。

对于armclang编译器,-I的意思是“将指定的目录添加到搜索以查找包含的files.Syntax -Idir的位置列表”,没有空格。

对于GNU makefile‘-I’具有相同的含义(但有一个空格)。

在我的makefile中,我有以下内容:

代码语言:javascript
复制
$(aarch32_bootobj): %.o: %.s
     @echo " [ASM ] $<"
     @armclang --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@

在运行Makefile时,我收到以下警告和错误:

代码语言:javascript
复制
    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存在于公共/共享下

当在makefile之外运行相同的armclang命令时,它可以工作。因此,我假设makefile已经格式化了-I /share选项,并在-I之后添加了自动空间。

有什么方法可以正确运行armclang命令吗?在其他情况下,让makefile解析-Icommon/shared而不需要任何自动格式化是可能的吗?

我已经尝试了很多技巧来解决这个问题,但没有成功。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-15 08:45:19

GNU不会拆分-Icommon/shared选项,即使它拆分了,armclang也能够解析该选项。如果从Makefile中的@调用中删除armclang,您将看到make到底做了什么,并且-Icommon/shared参数保持不变。

您的问题在于armclang;请参见跟踪器上的这只虫子。它不会将-I标志传递给它的集成汇编程序。因此,解决办法应该是将-no-integrated-as传递给armclang

代码语言:javascript
复制
     @armclang -no-integrated-as --target=armv8a-arm-none-eabi -Icommon/shared -c $< -o $@

如果这不起作用,将.include指令替换为#include,或者将asm文件重命名为.S (大写S),这表明它们需要C预处理,或者传递armclang -x assembler-with-cpp标志。这方面的行为已被记录为这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30253804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档