#!/bin/bash
# 设置 Zlib 源代码目录
ZLIB_SRC_DIR=$(pwd)
# 设置输出目录
OUTPUT_DIR="$ZLIB_SRC_DIR/build"
mkdir -p "$OUTPUT_DIR"
# 函数用于构建特定架构的 Zlib
build_zlib() {
ARCH=$1
BUILD_DIR="$OUTPUT_DIR/build_$ARCH"
INSTALL_DIR="$OUTPUT_DIR/install_$ARCH"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
cmake "$ZLIB_SRC_DIR" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DCMAKE_OSX_ARCHITECTURES=$ARCH
make -j$(sysctl -n hw.logicalcpu)
make install
}
# 构建 x86_64 版本
build_zlib "x86_64"
# 构建 arm64 版本
build_zlib "arm64"
# 创建通用二进制文件
lipo -create \
"$OUTPUT_DIR/install_x86_64/lib/libz.a" \
"$OUTPUT_DIR/install_arm64/lib/libz.a" \
-output "$OUTPUT_DIR/libz_universal.a"
echo "Universal library created at $OUTPUT_DIR/libz_universal.a"
#!/bin/bash
# 设置目录
ZLIB_SRC_DIR=$(pwd)
# 设置工作目录
WORK_DIR=$(pwd)/build
BUILD_DIR_X86_64="$WORK_DIR/build_x86_64"
BUILD_DIR_ARM64="$WORK_DIR/build_arm64"
BUILD_DIR_UNIVERSAL="$WORK_DIR/build_universal"
INSTALL_DIR_X86_64="$BUILD_DIR_X86_64/install"
INSTALL_DIR_ARM64="$BUILD_DIR_ARM64/install"
UNIVERSAL_LIB_DIR="$BUILD_DIR_UNIVERSAL/lib"
UNIVERSAL_INCLUDE_DIR="$BUILD_DIR_UNIVERSAL/include"
# 创建工作目录
mkdir -p $WORK_DIR
# 创建构建目录
mkdir -p $BUILD_DIR_X86_64
mkdir -p $BUILD_DIR_ARM64
mkdir -p $BUILD_DIR_UNIVERSAL
# 编译和安装 zlib
build_zlib() {
ARCH=$1
INSTALL_DIR=$2
mkdir -p $WORK_DIR/zlib_${ARCH}
cd $WORK_DIR/zlib_${ARCH}
cmake $ZLIB_SRC_DIR -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR -DCMAKE_OSX_ARCHITECTURES=$ARCH
make
make install
}
# 合并 zlib 库文件和头文件
merge_zlib() {
mkdir -p $UNIVERSAL_LIB_DIR
mkdir -p $UNIVERSAL_INCLUDE_DIR
lipo -create -output $UNIVERSAL_LIB_DIR/libz.a $INSTALL_DIR_X86_64/lib/libz.a $INSTALL_DIR_ARM64/lib/libz.a
cp -R $INSTALL_DIR_X86_64/include