Maktub_Wiki Maktub_Wiki
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
  • UI相关

    • UITableView
  • C_C++库编译

    • libarchive静态库
    • iOS
    • C_C++库编译
    Maktub_小明
    2025-02-18
    目录

    libarchive静态库

    # 说明

    基于libarchive.a + podspec

    # 编译.a静态文件

    1. 下载代码 https://github.com/libarchive/libarchive/releases (opens new window)
    2. 修改cat/CMakeLists.txt,tar/CMakeLists.txt,cpio/CMakeLists.txt,unzip/CMakeLists.txt,注释掉以下内容
    # INSTALL(TARGETS bsdtar RUNTIME DESTINATION bin)
    # INSTALL_MAN(${bsdtar_MANS})
    
    1. 生成Xcode代码项目文件
    # 进入项目文件夹
    # 结果输出到_builds文件夹
    cmake -S. -B_builds -GXcode -DCMAKE_SYSTEM_NAME=iOS 
    
    1. 打开_builds文件下的libarchive.xcodeproj项目
    2. target选择archive_static,并修改为release模式
    3. 开始编译,在Products文件夹获取libarchive.a文件
    4. 从libarchive文件夹获取两个头文件archive.h和archive_entry.h

    # 创建podspec

    1. 创建pod lib create libarchive,输出如下
    What platform do you want to use?? [ iOS / macOS ]
     >  iOS
    
    What language do you want to use?? [ Swift / ObjC ]
     > Swift
    
    Would you like to include a demo application with your library? [ Yes / No ]
     > Yes
    
    Which testing frameworks will you use? [ Quick / None ]
     > None
    
    Would you like to do view based testing? [ Yes / No ]
     > No
    
    
    1. 复制文件到libarchive/Classes文件夹
    # tree libarchive
    libarchive
    ├── Assets
    └── Classes
        ├── include
        │   ├── archive.h
        │   └── archive_entry.h
        └── lib
            └── libarchive.a
    
    1. 修改libarchive.podspec文件

    添加以下内容

    s.static_framework = true
    s.vendored_libraries = 'libarchive/Classes/lib/*a'
    s.libraries = 'bz2','iconv','z'
    

    修改后内容如下

    Pod::Spec.new do |s|
      s.name             = 'libarchive'
      s.version          = '3.7.7'
      s.summary          = 'A short description of libarchive.'
      s.description      = <<-DESC
    TODO: Add long description of the pod here.
                           DESC
    
      s.homepage         = 'https://github.com/Maktub/libarchive'ß
      s.license          = { :type => 'MIT', :file => 'LICENSE' }
      s.author           = { 'Maktub' => '[email protected]' }
      s.source           = { :git => 'https://github.com/xxxxx/libarchive.git', :tag => s.version.to_s }
      # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
    
      s.ios.deployment_target = '15.0'
    
      s.source_files = 'libarchive/Classes/**/*'
    
      s.static_framework = true
      s.vendored_libraries = 'libarchive/Classes/lib/*a'
      s.libraries = 'bz2','iconv','z'
    end
    

    # 编译后libarchive.framework,目录如下

    libarchive.framework
    ├── Headers
    │   ├── archive.h
    │   ├── archive_entry.h
    │   └── libarchive-umbrella.h
    ├── Info.plist
    ├── Modules
    │   └── module.modulemap # swift项目使用的关键文件
    └── libarchive
    

    # 参考

    • 为ios构建libarchive (opens new window)
    • cross-compiling-for-ios-tvos-visionos-or-watchos (opens new window)
    上次更新: 2025/03/22, 03:52:10
    UITableView

    ← UITableView

    Theme by Vdoing | Copyright © 2021-2025 Maktub_小明 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式