ios交叉編譯dylib

來源:互聯網
上載者:User

標籤:

ios交叉編譯dylib

因多個靜態庫,libes,libffmpeg,libmt. libpcap 使用不方便

 

在封裝一層介面,產生動態庫(c代碼),由IOS app上層調用。

 

 

 

注意:

ARCH 指定,可以指定多個,向下相容!

目前為止Apple行動裝置預設指令集-------------------------------------------------------------------------------------armv6 裝置: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Toucharmv7 裝置: iPhone3GS, iPhone4, iPhone4S                      iPad, iPad2, iPad3(The New iPad), iPad mini                      iPod Touch 3G, iPod Touch4armv7s裝置: iPhone5, iPhone5C, iPad4(iPad with Retina Display)arm64 裝置: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)

 

使用lipo -info命令 查看動態庫資訊

input file libmtsql.a is not a fat file

Non-fat file: libmtsql.a is architecture: armv7

也可以用readelf讀取頭資訊。

 

nm命令查看符號資訊,以下是一些常見的符號類型
nm輸出字元 含義
R Read only symbol. 比如在代碼中有一個const MAXDATA = 3095; 則MAXDATA就是一個Read only symbol
N 這是一個偵錯符號
D 這是一個已經初始化的變數的符號。比如代碼中int i = 1和char *str = "Hello"則i和str都是這種類型的符號
T Text段的符號。子程式都是這種符號,比如檔案中實現了一個函數function,則function就是這種符號
U 未定義的符號。如果檔案中引用了不存在的函數,則這些未定義的函數符號就是這種類型
S 未初始化的符號,比如全域變數int s;則s的符號就是此類型
  當指定多個ARCH結構時, 同一個符號出現多個地址!  今日遇見問題: IOS_BASE_SDK="8.1" IOS_DEPLOY_TGT="7.1" DEVROOT = "$(shell xcode-select -p)/Platforms/iPhoneOS.platform/Developer" SDKROOT ="$(DEVROOT)/SDKs/iPhoneOS$(IOS_BASE_SDK).sdk"

8.1的iphoneOS編譯的動態庫, APP 前台調用找不到符號 提示Undefined symbols for architecture armv7s reference from。 前台是在越獄開發環境theos 編譯的。

 懷疑:兩種串連符號地址不同 

ios交叉編譯dylib

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.