iOSデバイス用のOpenSSLの特定のバージョンをコンパイルできましたが、現在Mac OSX用にコンパイルしようとしています。私は次のような結果を得るlipo -info libcrypto.a
実行するとMac用OpenSSLをコンパイル中にlibcrypto arエラーが発生する
ar r ../../libcrypto.a o_names.o obj_dat.o obj_lib.o obj_err.o obj_xref.o
ar: ../../libcrypto.a is a fat file (use libtool(1) or lipo(1) and ar(1) on it)
ar: ../../libcrypto.a: Inappropriate file type or format
::私は私のbashスクリプトを実行したときしかし、私は次のエラーを取得しています(以下に)これはどんな意味がありません
Architectures in the fat file: libcrypto.a are: i386 x86_64
を、私のbashスクリプトはOpenSSL for i386を設定しているだけです(私は両方を実行するようにループしていましたが、これらの問題が出始めた時点でx86_64を削除しました)。
私は同様のSOの質問hereとhereの答えに従ってみました。しかし、それらは同じ結果をもたらした。さらに、OpenSSL WikiのMacのインストール手順も役に立たなかった。
マイスクリプト:
Build.sh
projectDir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ARCHS=("i386")
FIPS_VERSION="2.0.12"
OPENSSL_VERSION="1.0.2g"
rm -rf openssl* fips*
if [ -d "out" ]; then
rm -rf out
fi
mkdir out
source ./Build-FIPS.sh
cd $projectDir
source ./Build-OpenSSL.sh
Build-OpenSSL.sh
set -e
function main() {
verifyopenssl
for ((i=0; i < ${#ARCHS[@]}; i++))
do
makeopenssl "${ARCHS[i]}"
done
}
function verifyopenssl() {
gpg --verify $projectDir/../Source/openssl-$OPENSSL_VERSION.tar.gz.asc
tar -zxf $projectDir/../Source/openssl-$OPENSSL_VERSION.tar.gz
cd openssl-$OPENSSL_VERSION
}
function makeopenssl() {
BUILD_ARCH=$1
SDK_NAME="macosx"
GCC=$(xcrun -sdk ${SDK_NAME} -find gcc)
SDK_PATH=$(xcrun -sdk ${SDK_NAME} --show-sdk-path)
MACHINE="darwin-i386-cc"
# BSD_ARCH="BSD-generic32"
CONFIG_ARGS="$MACHINE \
$BSD_ARCH \
--openssldir=$projectDir/out/openssl_${BUILD_ARCH} \
fips \
--with-fipsdir=${projectDir}/out/fips_${BUILD_ARCH} \
no-idea \
no-cast \
no-seed \
no-md2 \
no-sha0 \
no-whirlpool \
-DL_ENDIAN"
export CC="${GCC} -arch ${BUILD_ARCH}"
export CFLAGS="-isysroot ${SDK_PATH} -I ${projectDir}/out/fips_${BUILD_ARCH}/include"
export LDFLAGS="-arch $BUILD_ARCH"
./Configure ${CONFIG_ARGS}
make depend
make
# make install
# make clean && make dclean
}
main [email protected]
完璧な仕事、別のスクリプト "Build-FIPS.sh"がありますか? – Nilesh