讨论在 https://github.com/theos/theos/issues/172
起因:
老的theos,或者叫theos-legacy,需要手动复制substrate的库到项目目录。
这个库本身包含armv7s,所以通过在Makefile里添加
export ARCHS=armv7 armv7s arm64
可以编译带有armv7s的tweak。
新版的theos,或者叫modern theos使用的是symbol stub,也就是你Xcode里看到的.tbd文件。
EDIT: .tbd stub的功能是在后续某个版本的Xcode中添加的,所以如果你使用的是老版的Xcode的话你最好还是使用theos legacy再加segalign参数来进行编译
出于上面的issues链接里提到的原因modern theos自带的stub没有armv7s的部分,导致这个方法会在link时crash掉编译过程。
对普通开发者的影响:
大多数时候你并不需要折腾archs因为v7和v7s的兼容性非常好。 然而某些老项目用了这个方法来编译v7s,你用新的theos编译这些项目来进行学习的话会出问题。这个pr则修复了这一问题。
GLHF