1

これに何時間も取り組んでいるので、どんな洞察も大歓迎です。

OS X上のiPhoneシミュレーター用にlibssh2をコンパイルしようとしています(すでにデバイス用に正常にコンパイルされています)。

次の環境変数とコマンドを使用しています。

export DEVROOT=/Developer/Platforms/iPhoneSimulator.platform/Developer 
export SDKROOT=$DEVROOT/SDKs/iPhoneSimulator3.0.sdk 
export CC=$DEVROOT/usr/bin/gcc-4.2 
export LD=$DEVROOT/usr/bin/ld 
export CPP=$DEVROOT/usr/bin/cpp-4.2 
export CXX=$DEVROOT/usr/bin/g++-4.2 
export AR=$DEVROOT/usr/bin/ar 
export AS=$DEVROOT/usr/bin/as 
export NM=$DEVROOT/usr/bin/nm 
export CXXCPP=$DEVROOT/usr/bin/cpp-4.2 
export RANLIB=$DEVROOT/usr/bin/ranlib 
export LDFLAGS="-arch i386 -pipe -no-cpp-precomp -isysroot $SDKROOT -L/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os/lib"
export CFLAGS="-arch i386 -pipe -no-cpp-precomp -isysroot $SDKROOT -I/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os/include"
export CXXFLAGS="-arch i386 -pipe -no-cpp-precomp -isysroot $SDKROOT -I/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os/include/"
export CFLAGS=-m32
export CPPFLAGS=-m32

cd /Users/<USERNAME>/Desktop/Dev/src/gnupg-1.4.10
sudo ./configure --host=i386-apple-darwin --prefix=/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os
sudo make
sudo make install

cd /Users/<USERNAME>/Desktop/Dev/src/libgpg-error-1.7
sudo ./configure --host=i386-apple-darwin --prefix=/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os --enable-shared=no
sudo make
sudo make install

cd /Users/<USERNAME>/Desktop/Dev/src/libgcrypt-1.4.5
sudo ./configure --host=i386-apple-darwin --prefix=/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os --enable-shared=no --with-gpg-error-prefix=/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os --disable-asm
sudo make
sudo make install

sudo ./configure --host=i386-apple-darwin --prefix=/Users/<USERNAME>/Desktop/Dev/iphonesimulator-os --with-libgcrypt-prefix=/Users/<USERNAME>/Desktop/Dev/src/libgcrypt-1.4.5
cd /Users/<USERNAME>/Desktop/Dev/src/libssh2-1.2.7
sudo make
sudo make install

生成されるdylibはx86_64として表示され、iPhoneアプリで静的ライブラリ.aファイルを使用しようとするとlibssh2.aと表示され、ファイルはリンクされているアーキテクチャ(i386)ではないサポートされていないファイル形式でビルドされました。

libgcryptおよびその他の必要なライブラリはすべて問題なくコンパイルされています。

前もって感謝します!

4

2 に答える 2

2

私はこれとほとんど同じ問題に遭遇しました。libssh2をコンパイルしていましたが、opensslを使用していました。configureを強制的に32ビットモードでコンパイルするには、CFLAGSとCPPFLAGSを設定する必要があります。configureを実行する前に、ターミナルで次のコマンドを入力します。

export CFLAGS=-m32
export CPPFLAGS=-m32

ターミナルで./configureを実行する前に、CFLAGSとCPPFLAGSを設定する必要があります。

CFLAGS=-m32をエクスポートします

CPPFLAGS=-m32をエクスポートします

私が行った方法でopensslを使用してlibssh2をビルドするには、最初に最新のopensslおよびlibssh2ソースファイルをそれぞれのサイトからダウンロードします。ダウンロードして解凍したopensslのディレクトリに移動します。私はopensslバイナリをビルドした後、実際に上記のコマンドを実行しましたが、それは問題ではないようです。ただし、libssh2をビルドする前に必要でした。

./configure --prefix = / TARGET_DIRECTORY

作る

インストールする

その後、libssh2をダウンロードして解凍したフォルダーに切り替えます。次のコマンドを使用して構成およびビルドします。

./configure --with-openssl --with-libssl-prefix = / OPENSSL_TARGET_DIRECTORY --prefix = / LIBSSH2_TARGET_DIRECTORY

作る

インストールする

Xcodeプロジェクトにインポートする*.aファイルは、ターゲットディレクトリの「lib」フォルダにあります。

ご存知のとおり、これはiPhoneシミュレーター専用です。デバイスでこのライブラリを使用するには、armアーキテクチャ用にビルドする必要があります。

于 2010-09-01T15:02:48.847 に答える
0

次の環境は、iPhoneシミュレーター用のlibssh2とlibsslを構築するために機能しました。

export DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
export SDKROOT=$DEVROOT/SDKs/iPhoneOS4.2.sdk
export CC=$DEVROOT/usr/bin/gcc
export LD=$DEVROOT/usr/bin/ld
export CPP=$DEVROOT/usr/bin/cpp
export CXX=$DEVROOT/usr/bin/g++
export AR=$DEVROOT/usr/bin/ar
export AS=$DEVROOT/usr/bin/as
export NM=$DEVROOT/usr/bin/nm
export CXXCPP=$DEVROOT/usr/bin/cpp
export RANLIB=$DEVROOT/usr/bin/ranlib
export LDFLAGS="-arch i386  -L/Users/user/project/third_party/lib"
export CFLAGS="-arch i386   -I/Users/user/project/third_party/include"
export CXXFLAGS="-arch i386 -I/Users/user/project/third_party"
于 2011-02-02T17:20:06.283 に答える