framework静态库 - ShenYj/ShenYj.github.io GitHub Wiki
既然
.a是.o的集合,.framework是.a的包装, 那么说明.a就是.framework的核心
-
在
OCStaticLib文件夹下准备libOCTest.a静态库. ├── OCTest.h ├── OCTest.m ├── OCTest.o └── libOCTest.a -
完整的文件目录结构
. ├── Frameworks (用来存放一会生成的`Framework`静态库) ├── OCStaticLib │ ├── OCTest.h │ ├── OCTest.m │ ├── OCTest.o │ └── libOCTest.a └── test.m
- 补充
- OCStaticLib是用来准备生成
libOCTest.a的, 示例会利用一个.a手动创建成Framework静态库 -
test.m用来验证Framework是否创建成功 -
Frameworks路径用来存放静态库, 在链接成直接文件时, 指定路径这一项更直观
- OCStaticLib是用来准备生成
- 补充
-
新建一个文件夹, 命名为
OCTest.framework -
在
OCTest.framework中新建子文件夹Headers -
将上面的
OCTest.h复制到Headers中 -
将上面的
libOCTest.a复制到OCTest.framework中-
目录结构
. ├── Headers │ └── OCTest.h └── libOCTest.a
-
-
去掉
.a后缀 -
去掉
lib前缀-
最后
OCTest.framework目录结构. ├── Headers │ └── OCTest.h └── OCTest.a
-
-
利用外层的
test.m链接Framework静态库, 生成.o目标文件clang -x objective-c \ -target x86_64-apple-macos11.1 \ -fobjc-arc \ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk \ -I./Frameworks/OCTest.framework/Headers \ -c test.m \ -o test.o
-
链接
Framework静态库生成执行文件clang -target x86_64-apple-macos11.1 \ -fobjc-arc \ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk \ -F./Frameworks \ -framework OCTest \ test.o -o test -
lldb下运行可执行文件-
进入
lldb环境lldb
-
包装成
target(lldb) file test Current executable set to '/Users/shenyj/Documents/CodeForTest/lib/staticFramework/test' (x86_64).
-
运行
target(lldb) r Process 58403 launched: '/Users/shenyj/Documents/CodeForTest/lib/staticFramework/test' (x86_64) 2021-01-25 16:49:54.145561+0800 test[58403:1826528] __TestExample 2021-01-25 16:49:54.145836+0800 test[58403:1826528] testApp ------ Process 58403 exited with status = 0 (0x00000000)
-