新建項目 iOS | Framework & Library Cocoa Touch Static Library 新建一個Library庫 1. M.h頭文件 2. M.c實現文件 cmd + B 編譯,此時只編譯模擬器了版本,可以連接手機編譯真機版本靜態庫文件,編譯成功後會在電腦上生成相關的.a ...
新建項目
iOS | Framework & Library
Cocoa Touch Static Library
新建一個Library庫
1. M.h頭文件
#ifndef M_h #define M_h #include <stdio.h>
void testSleep(int t); void testPthread(int n); #endif /* M_h */
2. M.c實現文件
#include "M.h" #include <stdio.h> #include <pthread.h> #include <unistd.h> #include <stdlib.h> void testSleep(int t) { printf("testSleep:\n"); int i; for (i=0; i<10; i++) { printf("sleep...\n"); usleep(t*1000); printf("return...\n"); } } void *thrFun(void *p) { int t = (int)p; int i; for (i = 0; i<5; i++) { printf("thrFun %d\n", t); sleep(1); } return NULL; } void testPthread(int n) { void *retval; pthread_t *tid = (pthread_t *)malloc(sizeof(pthread_t)*n); int i; for (i=0; i<n; i++) pthread_create(&tid[i], NULL, thrFun, (void *)i); for (i=0; i<n; i++) pthread_join(tid[i], &retval); }
cmd + B 編譯,此時只編譯模擬器了版本,可以連接手機編譯真機版本靜態庫文件,編譯成功後會在電腦上生成相關的.a靜態庫文件;
libM.a文件所在目錄
/Users/xx/Library/Developer/Xcode/DerivedData/M-xxx/Build/Products/Debug-iphonesimulator
/Users/xx/Library/Developer/Xcode/DerivedData/M-xxx/Build/Products/Debug-iphoneos
兩個路徑分別是模擬器,真機版本的輸出目錄。
將libM.a庫文件和M.h頭文件拷貝到外部項目即可使用靜態庫裡面的函數了。
查看 .a 文件支持的平臺
通過lipo命令來查看
lipo -info xxLibrary.a
輸出結果:
Architectures in the fat file: xxLibrary.a are: armv7 armv7s i386 x86_64 arm64
上面幾個平臺分別對應的手機
- armv7是iphone5之前的設備指令集架構;
- armv7s是iphone5、iphone 5s的指令集架構;
- arm64是iphone6、iphone 6plus的指令集架構;
- i386以及x86_64是MAC的指令集架構;
查看 .framework 文件支持的平臺
lipo -info ./****.framework/****
輸出結果:
Architectures in the fat file: ./****.framework/**** are: i386 armv7 armv7s
如此便可查看你工程中的靜態庫是否支持64位。