zoukankan      html  css  js  c++  java
  • iOS——为Xcode编译POCO C++静态库

    一、POCO C++ library简介

      POCO C++ library是一个C++编写的跨平台库,主要实现网络连接、数据库管理以及服务器,适用于跨平台、嵌入式。

    二、为Xcode编译POCO C++ 静态库

      1、确定需要编译的版本

      要想使POCO C++在iOS的各个平台上运行,那么需要针对各个平台的不同架构进行编译,因此我们需要了解iOS各个平台的架构,主要分为iPhone模拟器、iPhone真机以及运行Xcode电脑本身的架构。

      (1)iPhone模拟器

      目前iPhone模拟器架构分为两类:

      *iPhone5及以下版本的模拟器的架构是i386;

      *iPhone5以上(不包括iPhone5)版本的模拟器的架构是x86_64;

      (2)iPhone真机

      iPhone真机的架构有armv7,armv7s和arm64;  

      (3)OSX

      OSX的架构是x86_64;

      由以上可知,我们需要为armv7,armv7s,arm64,i386,iPhone模拟器x86_64以及电脑x86_64的静态库。

      2、编译器选择

      编译器应设置为Xcode自带的编译器。修改编译器的方法是:用文本编辑器打开需要修改的config文件,例如poco/build/config/iPhone,将原来的CC与CXX修改为Xcode自带的编译器的路径,例如:

      CC  =/Applications/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang

      CXX =/Applications/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++

      在目前的Xcode中,C语言用clang编译器,在Xcode中的路径:/Applications/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang;

      在目前的Xcode中,C++语言用clang++,在Xcode中的路径:/Applications/XCode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++;

      一般来说,在POCO的配置的编译脚本中都不需要我们手动配置编译器,脚本命令会自己找到对应的编译器。

      3、编译静态库

      (1)官网下载源代码:http://pocoproject.org/download/index.html

      (2)把下载下来的源代码解压到桌面;

      (3)打开终端,进入源代码文件,针对不同的平台架构运行下面的命令:

      1)armv7:

       ./configure --config=iPhone-clang-libc++ --no-tests --no-samples --omit=Data/MySQL,Data/ODBC --static --include-path=/usr/local/openssl/include --prefix=/Users/"用户名"/Desktop/Xcode-poco/armv7

       make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=armv7 install

      2)armv7s

      ./configure --config=iPhone-clang-libc++ --no-tests --no-samples --omit=Data/MySQL,Data/ODBC --static --include-path=/usr/local/openssl/include --prefix=/Users/"用户名"/Desktop/Xcode-poco/armv7s

       make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=armv7s install

      3) arm64

      ./configure --config=iPhone-clang-libc++ --no-tests --no-samples --omit=Data/MySQL,Data/ODBC --static --include-path=/usr/local/openssl/include --prefix=/Users/"用户名"/Desktop/Xcode-poco/arm64

       make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=armv64 install

      4) i386

      ./configure --config=iPhoneSimulator-clang-libc++ --no-tests --no-samples --omit=Data/MySQL,Data/ODBC --static --include-path=/usr/local/openssl/include --prefix=/Users/"用户名"/Desktop/Xcode-poco/i386

       make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=i386 install

      5) iPhoneSimulator-x86_64

      ./configure --config=iPhoneSimulator-clang-libc++ --no-tests --no-samples --omit=Data/MySQL,Data/ODBC --static --include-path=/usr/local/openssl/include --prefix=/Users/"用户名"/Desktop/Xcode-poco/iPhoneSimulator-x84_64

       make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=x86_64 install

      6)Darwin64

      ./configure --config=Darwin64-clang-libc++ --no-tests --no-samples --omit=Data/MySQL,Data/ODBC --static --include-path=/usr/local/openssl/include --prefix=/Users/"用户名"/Desktop/Xcode-poco/Darwin64

       make IPHONE_SDK_VERSION_MIN=5.0 POCO_TARGET_OSARCH=x86_64 install

       说明:

        *--config                   配置编译脚本,由于Xcode的C和C++编译器是clang和clang++,因此选择iPhone-clang-libc++脚本;

        *--no-tests和--no-samples                表示不编译tests文件和samples文件

        *--omit                 在这里面配置自己不需要的库文件

        *--include-path              用来配置依赖信息,在这里,由于Crypto和NetSSL_OpenSSL模块依赖于openSSL,因此需要配置openSSL的路径

        *--static                表示建立静态库文件

        *--prefix                                           配置编译好的库文件的存放位置

        *IPHONE_SDK_VERSION_MIN       设置支持的iPhone的SDK的最低版本

        *POCO_TARGET_OSARCH                  设置平台的架构信息

      4、制作通用库文件

      (1)制作通用库

      这样我们就得到了各个架构的多个库文件,为了使用方便,我们可以制作通用库文件,可以利用Xcode的lipo命令来制作,其格式如下:

        lipo -create 需要合并的文件 -output 生成的目标文件;

      例如,需要将armv7/lib/libPocoData.a与arm64/lib/libPocoData.a合并为iOS/lib/libPocoData.a使用下面的命令:

        lipo -create armv7/lib/libPocoData.a arm64/lib/libPocoData.a -output iOS/lib/libPocoData.a  

              

      注意:由于Darwin64的架构和iPhoneSimulator-x86_64是相通的架构,因此不能将他们合并在一起。

      (2)查看库信息

      可以通过:

        lipo -info 需要查看的库文件

      来查看库文件所支持的架构,例如需要查看libPocoData.a所支持的架构,可以使用下面的命令:

        lipo -info libPocoData.a

      

  • 相关阅读:
    MySQL 基础 查询
    Mysql+keepalived双主
    Kubernetes(二)K8S基础架构
    Kubernetes(一)K8S入门
    Docker (五) 利用Dockerfile创建Nginx镜像
    Docker (四) 使用Dockerfile的方式构建镜像
    Docker (三) 使用commit创建Docker镜像
    Docker (二) Docker网络配置
    Ansible (四) 角色Roles
    Docker (一) Docker入门
  • 原文地址:https://www.cnblogs.com/mupiaomiao/p/4707854.html
Copyright © 2011-2022 走看看