静态库制作和Framework链接

1,597 阅读1分钟

clang命令参数:

-x: 指定编译文件语言类型
-g: 生成调试信息
-c: 生成目标文件,只运行preprocess,compile,assemble,不链接
-o: 输出文件
-isysroot: 使用的SDK路径

1. -I<directory> 在指定目录寻找头文件 对应Xcode Setting 里的 header search path
2. -L<dir> 指定库文件路径(.a\.dylib库文件)对应Xcode Setting 里的 library search path
3. -l<library_name> 指定链接的库文件名称(.a\.dylib库文件)对应Xcode Setting 里的 other link flags eg:-lAFNetworking

-F<directory> 在指定目录寻找framework 对应Xcode Setting 里的 framework search path
-framework <framework_name> 指定链接的framework名称 对应Xcode Setting 里的 other link flags eg:-framework AFNetworking

Clang把.m文件编译成.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 
-c filename.m -o filename.o

Clang把.o文件链接库编译成可执行文件:

clang -target x86_64-apple-macos11.1
-fobjc-arc
-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk
-L ./AFNetworking
-l AFNetworking
filename.o -o filename

libtool生成静态库:

libtool -static -o <OUTPUT NAME> <LIBRARY_1> <LIBRARY_2>

Clang链接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 TestExample
filename.o -o filename