我正在 os x 10.7.5 上用 xcode 4.5.1 编译一个 C 库。
使用 xcode LLVM 编译的库的大小比我使用普通 gcc 编译它时要大得多,makefile 传递相同的优化参数 -Os(没有 xcode 的终端)。GCC 生成 130K 二进制文件,而苹果 LLVM 生成 300K 二进制文件。相同的源代码相同的编译器选项。
无论我查看二进制文件的 iphone 模拟器版本、arm7 版本还是 arm 7s 版本,在使用 xcode 编译时,我仍然会得到大约 300K 的二进制文件。我在 .a 和 .o 对象上使用了 nm ,其中没有不需要的额外符号。
我记得我的库使用运行 gcc 的早期版本的 xcode 编译到 170K。
我还没有读到苹果 LLVM/clang 编译器产生更大的可执行文件的任何地方,所以我的猜测是我可能没有正确使用 xcode 中的优化设置。例如,无论我在 Xcode 中使用设置 -Os 还是 -O0,我都会得到同样大 300K 的二进制大小。更令人困惑的是,我的调试二进制文件比我的发布版本小。调试有 -O0 设置。
显然我错过了一些东西。
欢迎任何减少我的二进制大小的建议。
谢谢,
爸爸