1. 警告:directory not found for option “xxxxxxxx” 文件路徑未找到 **
- 選擇工程, 編譯的 (targets)
- 選擇 Build Settings 菜單
- 查找 Library Search Paths 和 Framework Search Paths嗅回, 刪掉編譯報warning的路徑即OK
詳細步驟圖文參考
2. missing required architecture i386 in file “xxxxxx/.a” 說明你的這個library文件是為Device (ARM架構(gòu))設(shè)計的,不支持Simulator (i386架構(gòu))
相關(guān)知識
參考stackoverfollow
arm架構(gòu)問題手機的架構(gòu)是為arm架構(gòu)
- armv6
iPhone
iPhone2
iPhone3G第一代和第二代iPod Touch - armv7
iPhone4
iPhone4S - armv7s
iPhone5
iPhone5C - arm64
iPhone5S
現(xiàn)在app store規(guī)定提交的應(yīng)用必須包含arm64.
xcode里Architectures這個屬性
這是指你想支持的指令集炒事,比如:armv7,armv7s健田,或者可以用$(ARCHS_STANDARD_32_BIT)這樣的參數(shù)
該編譯選項指定了工程將被編譯成支持哪些指令集拾碌,支持指令集是通過編譯生成對應(yīng)的二進制數(shù)據(jù)包實現(xiàn)的肮砾,如果支持的指令集數(shù)目有多個,就會編譯出包含多個指令集代碼的數(shù)據(jù)包劲件,造成最終編譯的包很大。
xcode工程里有Build Active Architecture Only這個屬性
這個屬性設(shè)置為yes约急,是為了debug的時候編譯速度更快,它只編譯當前的architecture版本苗分。而設(shè)置為no時厌蔽,會編譯所有的版本。
編譯出的版本是向下兼容的摔癣,比如你設(shè)置此值為yes奴饮,用iphone4編譯出來的是armv7版本的纬向,iphone5也可以運行,但是armv6的設(shè)備就不能運行戴卜。
所以逾条,一般debug的時候可以選擇設(shè)置為yes,release的時候要改為no投剥,以適應(yīng)不同設(shè)備
library not found for -lMobClickLibrary
在other link flag 里刪除-l "MobClickLibrary"
我遇到的問題
微信demo下載下來運行出現(xiàn) missing required architecture i386 in file “xxxxxx/libWeChatSDK.a”問題师脂,用終端查看了一下這個庫文件只支持 armv7,arm64
在終端里查看你的.a庫是不是支持i386
- 解決方法:
找找看有沒有支持i386的庫文件(下載SDK,要下載的sdk里面的那個libWeChatSDK.a才有支持i386的,里面有兩個文件夾 WeChatSDK_1.5和WeChatSDK_1.5_OnlyIphone,選擇WeChatSDK_1.5)
有i386的libWeChatSDK.a
- 使用真機測試
2.解決架構(gòu)問頭后在工程里出現(xiàn)了以下問題:Undefined symbols for architecture x86_64:"operator delete", referenced from:+[WeChatApiUtil EncodeBase64:] in libWeChatSDK.a(WeChatApiUtil.o)
屏幕快照 2014-12-11 下午3.43.16.png
解決方法:
- 果斷加上libc++.dylib