簡單描述一下這個問題:
咱們項目中使用了Google大神開發的LevelDB鍵值對數據庫,在Xcode6,iOS8的環境下,編譯好的.a靜態庫是能夠正常使用的。可是升級後,發如今模擬器上沒法link成功,真機上依然能夠link成功。c++
再延伸一下LevelDB的介紹:git
Leveldb是一個google實現的很是高效的kv數據庫,目前可以支持billion級別的數據量了。 在這個數量級別下還有着很是高的性能,主要歸功於它的良好的設計。github
Leveldb是Jeff Dean和Sanjay Ghemawat兩位大神級別的工程師發起的開源項目。其它更多更關Leveldb的介紹,能夠google詳細瞭解。數據庫
Leveldb的項目在github上的連接: https://github.com/google/leveldbiphone
若是須要使用Leveldb,首先須要去下載託管在github上的代碼,而後將代碼編譯成靜態庫。性能
用Xcode編譯方法我就不囉嗦了,我使用的是命令行方式,感受更快捷。步驟以下:
若是須要編譯成Mac OSX系統的靜態庫:google
1.首先用cd指令到leveldb的根目錄spa
2.輸入指令:CXXFLAGS=-stdlib=libc++ make
命令行
若是須要編譯成iOS系統的靜態庫: 設計
1.首先用cd指令到leveldb的根目錄
2.輸入指令:CXXFLAGS=-stdlib=libc++ make PLATFORM=IOS
而後將leveldb根目錄下的.a靜態庫文件和include文件一塊兒拖到本身的工程中,配置好header search paths和library search paths。
到此就可使用Leveldb提供的接口了,因爲Leveldb是用C++開發的,因此須要在使用的時候將引用db.h的.m修改成.mm。
如今來講一下標題問題的解決辦法。升級後link失敗,是因爲模擬器要求的靜態庫文件支持的系統版本最低爲7.0了。因此只須要稍微修改下編譯指令,以下:
CXXFLAGS=-miphoneos-version-min=7.0 make PLATFORM=IOS
從新編譯,生成的新.a文件就不會在模擬器上link失敗了。
順便提一下,若是須要修改編譯的architecture類型或者sdk版本,能夠去修改makefile。
須要直接使用LevelDB靜態庫的朋友,能夠去這裏clone:https://github.com/ALongWay/LSLevelDB