【发布时间】:2011-06-21 18:30:45
【问题描述】:
我正在处理一个遗留项目,其中包含大量可追溯到 OS X 之前的文件。它的数据已经 16 位对齐超过 15 年。我想转向完整的 LLVM 编译,但我似乎无法让 2 字节对齐工作。是否有任何可用的编译器级别选项? (以前使用-malign-mac68k)
我知道这里的#pragma pack(2) 选项。但是,这需要我修改超过 1000 个源文件才能包含它。这是一个最坏的选择,但它看起来像一个黑客。此外,如果这是可能的,那么肯定有一个默认选项来设置对齐方式吗?
【问题讨论】:
-
您使用的是 clang 还是 llvm-gcc?在 64 位主机上编译时,在 32 位目标上进行 32 位对齐时,clang 比 llvm-gcc 好得多。 (-m32 或其他任何东西,都会被 llvm-gcc 忽略)。基本上我建议尝试 clang。
-
llvm-gcc 似乎尊重 -malign-mac68k,所以如果没有其他解决方案,我们将使用它。我确实希望 llvm-gcc 会在某个时候消失,如果可能的话,我更愿意完全转换。但如果我们找不到解决方案,那可能需要等待。
-
这是一个伟大而棘手的问题。您可以尝试在 LLVM IRC 聊天中提问。如果不可能,他们可能会告诉你。 llvm.org/docs/#irc
-
感谢 gcamp 的提示,我会在那边的 IRC 询问。
-
只是好奇:为什么对齐很重要?
标签: objective-c xcode macos llvm