现在已经工作了几个小时了,所以任何见解都会受到高度赞赏。
我正在尝试在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和其他必需的库都编译完毕没有问题。
提前致谢!
答案 0 :(得分: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
请
make install
之后切换到您下载并解压缩libssh2的文件夹。使用以下命令配置和构建它:
./ configure --with-openssl --with-libssl-prefix = / OPENSSL_TARGET_DIRECTORY --prefix = / LIBSSH2_TARGET_DIRECTORY
请
make install
您可以在目标directorys的“lib”文件夹中找到要导入Xcode项目的* .a文件。
我相信你已经知道,这只适用于iPhone模拟器。您需要构建arm架构才能在设备上使用此库。
答案 1 :(得分: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"