我正在将xv6从GCC移植到Clang,并遇到以下错误消息:
clang -m32 -gdwarf-2 -Wa,-divide -c -o swtch.o swtch.S
clang-3.8: error: unsupported argument '-divide' to option 'Wa,'
请注意,-Wa
用于将参数传递给汇编程序,我无法弄清楚-divide
选项是什么。
作为修复,目前我通过将no-integrated-as
选项传递给Clang来关闭集成的汇编程序。但我想使用Clang的综合声明。忽略此选项是否安全?或者是否有另一种方法可以为Clang提供该选项?
答案 0 :(得分:2)
气体手册documentation for --divide
说:
在SVR4派生的平台上,字符
/
被视为注释字符,这意味着它不能在表达式中使用。--divide
选项将/
变为普通字符。这不会在开始评论的行的开头禁用/
,或者使用“#”来启动评论。
在我的Linux桌面上,--divide
不执行任何操作:as
组合mov $(15/2), %eax
只需使用或不使用--divide
即可。
所以你应该把它拿出去。如果这是一个问题并且clang确实在某些平台上将/
视为注释字符,那么它通常应该导致构建时失败,而不是带有隐藏错误的二进制文件。
是的,-divide
显然与--divide
做同样的事情。但是如果clang的汇编程序只支持更标准的double - --divide
形式,你可能想尝试-
。