我使用xcode和objective-C开发应用程序。 C / C ++ / Objective-C的编译器是Apple LLVM 5.1。
在我的调试配置中,我没有链接标志" -WI,-S,-x"并且项目可以运行。 在发布配置中,使用该falg,它会出现以下错误:
ld: internal error: atom not found in symbolIndex(__Z6initIDIN3sys3msg10MsgTouchUpEEiv) for architecture armv7
谁能告诉我这些旗帜是什么意思?或者我在哪里可以找到有关这些标志的文件。 我在谷歌搜索并访问llvm,clang网站,但我没有找到有价值的信息。
答案 0 :(得分:4)
-Wl
标志用于将标志直接传递给链接器; therfore:
-S
不要将调试信息(STABS或DWARF)放在输出文件中。
-x
不要将非全局符号放在输出文件的符号表中。在后跟踪中调试和获取符号名称时,非全局符号很有用,但在运行时不使用。如果-x与-r一起使用,则不会删除非全局符号名称,而是替换为唯一的虚拟名称,该名称在链接到最终链接图像时将自动删除。这允许死代码剥离(使用符号分解代码和数据)正常工作,并提供删除源符号名称的安全性。
(我在Terminal.app中使用man ld
获取此信息。