使用iOS SDK 4.2编译libpq
我正在尝试使用iOS SDK 4.2再次编译libpq for arm和i386。
我去年为SDK3.x做了没有任何问题。
现在,当我想用两个文件创建胖二进制文件时,我收到此错误:
specifed architecture type (arm) for file (/Users/montx/mylibs_sdk42/libpq.arm) does not match its cputype (7) and cpusubtype (3) (should be cputype (12) and cpusubtype (0))
我正在再次编译,因为我的编译文件不适用于最新的iOS4.2
Detected an attempt to call a symbol in system libraries that is not present on the iPhone:
fcntl$UNIX2003 called from function pg_set_noblock in image GlobalScan.
If you are encountering this problem running a simulator binary within gdb, make sure you 'set start-with-shell off' first.
谢谢!
这是完整的脚本:
#!/bin/bash
DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
SDKROOT=$DEVROOT/SDKs/iPhoneOS4.2.sdk
rm -rf /Users/montx/mylibs_sdk42
mkdir /Users/montx/mylibs_sdk42 #Store there compiled libs
make clean
#Build ARM library
./configure --host=arm-apple-darwin --without-readline --disable-ipv6 CC=$DEVROOT/usr/bin/arm-apple-darwin9-gcc-4.0.1 CPPFLAGS="-I$SDKROOT/usr/lib/gcc/arm-apple-darwin9/4.0.1/include/ -I$SDKROOT/usr/include/" CFLAGS="$CPPFLAGS -arch armv6 -pipe -no-cpp-precomp -isysroot $SDKROOT" CPP="$DEVROOT/usr/bin/cpp $CPPFLAGS" LD=$DEVROOT/usr/bin/ld
make -C src/interfaces/libpq
cp /Users/montx/Downloads/postgresql-8.4.1/src/interfaces/libpq/libpq.a /Users/montx/mylibs_sdk42/libpq.arm
#Build ARM library
./configure --host=arm-apple-darwin --without-readline --disable-ipv6 CC=$DEVROOT/usr/bin/arm-apple-darwin9-gcc-4.0.1 CPPFLAGS="-I$SDKROOT/usr/lib/gcc/arm-apple-darwin9/4.0.1/include/ -I$SDKROOT/usr/include/" CFLAGS="$CPPFLAGS -arch armv6 -pipe -no-cpp-precomp -isysroot $SDKROOT" CPP="$DEVROOT/usr/bin/cpp $CPPFLAGS" LD=$DEVROOT/usr/bin/ld
#Then build i386 library ==> the simulator is 32bits
CFLAGS="$(OTHER_CFLAGS) -mmacosx-version-min=10.5"
LDFLAGS="$(OTHER_LDFLAGS) -mmacosx-version-min=10.5"
make clean && ./configure CFLAGS="-arch i386 -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5" && make -C src/interfaces/libpq
cp src/interfaces/libpq/libpq.a /Users/montx/mylibs_sdk42/libpq.i386
#Then make fat binary
$DEVROOT/usr/bin/lipo -arch armv6 /Users/montx/mylibs_sdk42/libpq.arm -arch i386 /Users/montx/mylibs_sdk42/libpq.i386 -create -output /Users/montx/mylibs_sdk42/libpq
没有找到相关结果
已邀请:
2 个回复
催备南菠亨
我的模拟器旧脚本不再适用了,它再次在iOS 3.2上工作正常。
更新 这是完整的脚本。将bash脚本放在postgres目录中并构建。在你的项目中包括$ POSTGRESDIR / src / include和$ POSTGRESDIR / src / interfaces / libpq来获取必要的头文件。注意这适用于Postgres 8.尚未在Postgres 9上测试过。
河饶办斜施