iOS——為Xcode編譯POCO C++靜態庫

來源:互聯網
上載者:User

標籤:

一、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

  

 

iOS——為Xcode編譯POCO C++靜態庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.