【问题标题】:Build OpenLDAP client for iOS - no SASL为 iOS 构建 OpenLDAP 客户端 - 无 SASL
【发布时间】:2015-10-13 15:47:02
【问题描述】:

由于 Apple 系统性地将 OpenLDAP 弃用为 iOSOS X(在 10.10 中删除了一些需要的功能),我的团队决定获取 latest OpenLDAP,构建它并将库包含到应用程序中.

我只需要客户端功能。

为 MacOS 构建不是问题:

$ ./configure --with-tls=openssl --disable-slapd \
> --prefix="`pwd`/openldap-build/common" \
> --exec-prefix="`pwd`/openldap-build/MacOS"
$ make depend
$ make
$ make install

一切顺利。

问题正在为 iOS 构建。我找到了很好的solution which allows to build such external libraries for iOS。我调整了这个 bash 脚本以使用 ~openLDAP` 代码:

#!/bin/bash

PLATFORMPATH="/Applications/Xcode.app/Contents/Developer/Platforms"
TOOLSPATH="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin"
export IPHONEOS_DEPLOYMENT_TARGET="8.0"
pwd=`pwd`

findLatestSDKVersion()
{
    sdks=`ls $PLATFORMPATH/$1.platform/Developer/SDKs`
    arr=()
    for sdk in $sdks
    do
       arr[${#arr[@]}]=$sdk
    done

    # Last item will be the current SDK, since it is alpha ordered
    count=${#arr[@]}
    if [ $count -gt 0 ]; then
       sdk=${arr[$count-1]:${#1}}
       num=`expr ${#sdk}-4`
       SDKVERSION=${sdk:0:$num}
    else
       SDKVERSION="8.0"
    fi
}

buildit()
{
    target=$1
    hosttarget=$1
    platform=$2

    echo =============================================================
    echo = building for target $target platform $platform ... =
    echo =============================================================

    if [[ $hosttarget == "x86_64" ]]; then
        hostarget="i386"
    elif [[ $hosttarget == "arm64" ]]; then
        hosttarget="arm"
    fi

    export CC="$(xcrun -sdk iphoneos -find clang)"
    export CPP="$CC -E"
    export CFLAGS="-arch ${target} -isysroot $PLATFORMPATH/$platform.platform/Developer/SDKs/$platform$SDKVERSION.sdk -miphoneos-version-min=$SDKVERSION"
    export AR=$(xcrun -sdk iphoneos -find ar)
    export RANLIB=$(xcrun -sdk iphoneos -find ranlib)
    export CPPFLAGS="-arch ${target}  -isysroot $PLATFORMPATH/$platform.platform/Developer/SDKs/$platform$SDKVERSION.sdk -miphoneos-version-min=$SDKVERSION"
    export LDFLAGS="-arch ${target} -isysroot $PLATFORMPATH/$platform.platform/Developer/SDKs/$platform$SDKVERSION.sdk"

    mkdir -p $pwd/output/$target

     ./configure --disable-shared --host=$hosttarget-apple-darwin --with-tls=openssl --disable-slapd --prefix="$pwd/output-build/common"  --exec-prefix="$pwd/output-build/$target"

    make depend
    # make clean
    make
    make install

    echo =============================================================
    echo = Success for target $target platform $platform ... =
    echo =============================================================
}

findLatestSDKVersion iPhoneOS

buildit armv7 iPhoneOS
buildit armv7s iPhoneOS
buildit arm64 iPhoneOS
buildit i386 iPhoneSimulator
buildit x86_64 iPhoneSimulator

#LIPO=$(xcrun -sdk iphoneos -find lipo)
#$LIPO -create $pwd/output/armv7/lib/libpresage.a  $pwd/output/armv7s/lib/libpresage.a $pwd/output/arm64/lib/libpresage.a $pwd/output/x86_64/lib/libpresage.a $pwd/output/i386/lib/libpresage.a -output libpresage.a

配置和make depend 都可以。 make 在每个 iOS 目标上都失败并出现此错误:

Making all in /Users/maru/Documents/openldap-2c705e4/libraries
  Entering subdirectory liblutil
cc -g -O2 -I../../include        -I../../include     -arch x86_64  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.4.sdk -miphoneos-version-min=8.4  -c -o sasl.o sasl.c
sasl.c:26:10: fatal error: 'sasl/sasl.h' file not found
#include <sasl/sasl.h>
         ^
1 error generated.
make[2]: *** [sasl.o] Error 1
make[1]: *** [all-common] Error 1
make: *** [all-common] Error 1

我所看到的 SALS 不适用于 iOS,这是问题的根源。 我怎样才能克服这个问题?我可以以不同的方式配置openLDAP,以便它使用其他东西吗?或者有没有合适的方式为 iOS 提供SASL

【问题讨论】:

    标签: ios iphone xcode openldap sasl


    【解决方案1】:

    我不熟悉 iOS/OSX,但你可以尝试禁用 Cyrus SASL

    --without-cyrus-sasl
    

    除了你的其他./configure flags,即你需要运行

    ./configure --with-tls=openssl --disable-slapd \
    --without-cyrus-sasl \
    --prefix="`pwd`/openldap-build/common" \
    --exec-prefix="`pwd`/openldap-build/MacOS"
    

    更多标志信息请查看

    ./configure --help
    

    this很好的参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-06
      • 2014-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-13
      相关资源
      最近更新 更多