IOSスタティックライブラリ再カプセル化
IOSスタティックライブラリ再カプセル化静的ライブラリの分割およびマージ 分割 合併 release/debug の生成を切り替える armv 7 sのない静的ライブラリ 静的ライブラリの分割とマージ
分割
参照先:https://blog.csdn.net/xiaolei251990/article/details/82852388 https://blog.csdn.net/yiyunhzy/article/details/27523251静的ライブラリはターゲットファイルの簡単なリンクであり、linuxのarを使用して静的ライブラリを分割します.
このエラー:
分割後、arを用いる得ることができる.oファイル.Macで、次の操作を行います.
このバイナリファイルに含まれるcpuアーキテクチャを取得できます.
逆コンパイルコードを表示します.
結合
arでマージする.o成a
各タイプのaを得た後、lipoで太ったファイルにマージします
release/debugの生成を切り替えます
xcode 10のメニューバー-Product-Scheme-Edit Scheme、ウィンドウを開き、Run-info-Build configurationをreleaseに変更します.
armv 7 sの静的ライブラリがありません
xcode 10はすべてデフォルト設定で、生成された静的ライブラリはarm 64、armv 7、armv 7 sのみです.原因はtargetsの設定の問題です.(プロジェクトも同時に変更可能) Build Settings-Architecturesデフォルト:$(ARCHS_STANDARD)、armv 7 s(デフォルトでは含まれていないようです) を追加します. Vaild Architecturesにarmv 7 s(デフォルト) があると判断 Build Active Architectures Onlyで、対応するreleaseまたはdebugがNo(または直接これをNoに設定) であることを決定します.
分割
参照先:https://blog.csdn.net/xiaolei251990/article/details/82852388 https://blog.csdn.net/yiyunhzy/article/details/27523251静的ライブラリはターゲットファイルの簡単なリンクであり、linuxのarを使用して静的ライブラリを分割します.
ar -t xx.a // .o
ar -x xx.a // .o
このエラー:
xxx.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
デブファイルは、この静的ライブラリが複数のcpuアーキテクチャの静的ライブラリから構成されているはずです.lipoを使用して表示し、分割します.lipo -info xx.a // cpu
lipo xx. a -thin armv7 -output xx_armv7.a // armv7
lipo xx. a -thin armv7s -output xx_armv7s.a
分割後、arを用いる得ることができる.oファイル.Macで、次の操作を行います.
otool -Vf xx.lib // cpu
このバイナリファイルに含まれるcpuアーキテクチャを取得できます.
otool -tv xx.o //
逆コンパイルコードを表示します.
結合
arでマージする.o成a
ar cru libABC.a *.o // .o
ranlib libABC.a // , ar -s?
各タイプのaを得た後、lipoで太ったファイルにマージします
lipo -create xx_armv7.a xx_arm64.a -output xx.a //
lipo -create .a .a -output / .a
release/debugの生成を切り替えます
xcode 10のメニューバー-Product-Scheme-Edit Scheme、ウィンドウを開き、Run-info-Build configurationをreleaseに変更します.
armv 7 sの静的ライブラリがありません
xcode 10はすべてデフォルト設定で、生成された静的ライブラリはarm 64、armv 7、armv 7 sのみです.原因はtargetsの設定の問題です.(プロジェクトも同時に変更可能)