Conecte o aplicativo do iPhone ao PostgreSQL usando o Libpq
Eu preciso criar um aplicativo para o iPhone que irá se conectar a um banco de dados PostgreSQL 8.4 usando libpq. O problema é que não consigo obter um iPhone simples vinculado à libpq para compilar. No entanto, posso obter o aplicativo equivalente que é um aplicativo de desktop Mac regular para compilar e conectar ao PostgreSQL sem nenhum problema. Estou no Xcode 3.2 rodando no Snow Leopard.
Estou construindo a libpq para ambos os braços e para x86_84. A construção do braço é para o iPhone real e o x86_64 é para o simulador do iPhone usar. Eu então crio um binário gordo que contém ambos os arquivos e acabo com um arquivo chamado libpq. Este arquivo é o que eu uso no aplicativo Mac comum e funciona bem e causa problemas ao tentar criar o aplicativo do iPhone.
Aqui está o meu script de construção quando eu construo a libpq.
#!/bin/bash
DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
SDKROOT=$DEVROOT/SDKs/iPhoneOS3.0.sdk
rm -rf /Users/bob/mylibs
mkdir /Users/bob/mylibs #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/bob/Downloads/postgresql-8.4.1/src/interfaces/libpq/libpq.a /Users/bob/mylibs/libpq.arm
#Then build i386 library
make clean && ./configure && make -C src/interfaces/libpq
cp src/interfaces/libpq/libpq.a /Users/bob/mylibs/libpq.i386
#Then make fat binary
$DEVROOT/usr/bin/lipo -arch armv6 /Users/bob/mylibs/libpq.arm -arch x86_64 /Users/bob/mylibs/libpq.i386 -create -output /Users/bob/mylibs/libpq
Aqui está o log de criação quando tento compilar o aplicativo para iPhone a partir do Xcode.
Build iPhonePg of project iPhonePg with configuration Debug
Ld build/Debug-iphonesimulator/iPhonePg.app/iPhonePg normal i386
cd /Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg
setenv MACOSX_DEPLOYMENT_TARGET 10.5
setenv PATH "/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2 -arch i386 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator3.0.sdk -L/Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg/build/Debug-iphonesimulator -L../../../../mylibs -L/Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg -L/Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg/../../../../mylibs -F/Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg/build/Debug-iphonesimulator -filelist /Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg/build/iPhonePg.build/Debug-iphonesimulator/iPhonePg.build/Objects-normal/i386/iPhonePg.LinkFileList -mmacosx-version-min=10.5 -framework Foundation -framework UIKit -framework CoreGraphics /Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg/libpq -o /Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg/build/Debug-iphonesimulator/iPhonePg.app/iPhonePg
ld: warning: in /Users/bob/Documents/Programming/PragProgrammerIphoneSDK/iPhonePg/libpq, missing required architecture i386 in file
Undefined symbols:
"_PQclear", referenced from:
-[iPhonePgAppDelegate applicationDidFinishLaunching:] in iPhonePgAppDelegate.o
"_PQerrorMessage", referenced from:
-[iPhonePgAppDelegate applicationDidFinishLaunching:] in iPhonePgAppDelegate.o
"_PQconnectdb", referenced from:
-[iPhonePgAppDelegate applicationDidFinishLaunching:] in iPhonePgAppDelegate.o
"_PQfinish", referenced from:
-[iPhonePgAppDelegate applicationDidFinishLaunching:] in iPhonePgAppDelegate.o
"_PQstatus", referenced from:
-[iPhonePgAppDelegate applicationDidFinishLaunching:] in iPhonePgAppDelegate.o
"_PQexec", referenced from:
-[iPhonePgAppDelegate applicationDidFinishLaunching:] in iPhonePgAppDelegate.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Alguém mais se depara com isso que pode ajudar?
Obrigado StartShip3000