在iOS项目中,我使用的是第三方供应商提供的库。好吧,实际上是部分提供的,因为它的一部分是在GPL许可下。
另一部分,我不得不重新实现。这已经完成,它可以在设备上正确编译,运行和存档。
然后我尝试运行单元测试(或在模拟器上运行),并且出错了。链接器抱怨缺少符号。两个函数,定义为
extern int my_function();
Undefined symbols for architecture x86_64:
"_my_function", referenced from:
事实上,他们失踪了!这两个函数没有在我的代码中定义。
但是,我仍然可以正常编译,链接和运行。经过一些研究后,我发现引用这些函数的代码可能已被编译器以某种方式剥离,因为它是一条永远不会被采用的路径(并且可以在编译时确定)。
我的第一反应是检查优化,但每次运行时都设置为-O0
。
我应该解决这个问题,然后定义这些功能,但我很好奇。是什么让链接器在测试/模拟器构建中抱怨而不是在设备上运行?