Это потому, что ваш CustomiPhoneLib.a является толстой библиотекой, то есть библиотекой, которая содержит более одной целевой архитектуры, а именно armv6 и armv7 на iOS.Вы можете использовать lipo
для извлечения конкретной архитектуры в другой файл .a, используйте ar
и ranlib
для манипулирования им по желанию, а затем снова используйте lipo
, чтобы объединить манипулированные файлы .a в один .aтолстый файл.Например,
lipo CustomiPhoneLib.a -thin armv6 -output CustomiPhoneLibarmv6.a
lipo CustomiPhoneLib.a -thin armv7 -output CustomiPhoneLibarmv7.a
### use ar and ranlib at will on both files
mv CustomiPhoneLib.a CustomiPhoneLib.a.original
lipo CustomiPhoneLibarmv6.a CustomiPhoneLibarmv7.a -create -output CustomiPhoneLib.a
Однако вам не нужно делать это по той причине, которую вы упомянули.Компоновщик извлекает файлы объектов (.o) из библиотеки (.a) только в том случае, если ему необходимо разрешить некоторую ссылку на символ.Следовательно, если библиотека содержит объектный файл, на символы которого никогда не ссылаются в процессе компоновки (т. Е. Символы, которые не используются эффективно), этот объектный файл не попадет в исполняемый файл.