IOSスタティックライブラリ再カプセル化

1741 ワード

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 -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の設定の問題です.(プロジェクトも同時に変更可能)
  • Build Settings-Architecturesデフォルト:$(ARCHS_STANDARD)、armv 7 s(デフォルトでは含まれていないようです)
  • を追加します.
  • Vaild Architecturesにarmv 7 s(デフォルト)
  • があると判断
  • Build Active Architectures Onlyで、対応するreleaseまたはdebugがNo(または直接これをNoに設定)
  • であることを決定します.