building libprotobuf-lite for iPhone

742 views
Skip to first unread message

Marcus Better

unread,
Nov 1, 2010, 11:39:27 AM11/1/10
to Protocol Buffers
Hi,

I wonder if anyone has built libprotobuf-lite for the iOS, and if
there are any special pitfalls?

Cheers,

Marcus

Marcus Better

unread,
Nov 23, 2010, 6:47:18 AM11/23/10
to Protocol Buffers
On 1 Nov, 16:39, Marcus Better <mar...@better.se> wrote:
> I wonder if anyone has built libprotobuf-lite for the iOS, and if
> there are any special pitfalls?

Yes I have, and of course I will share my findings with the world for
the benefit of mankind.

I also have a follow-up question: the libprotobuf-lite.a static
library is about 500 kB which seems a little heavy. Is this normal?
I've tried to strip the symbol information but maybe that didn't
succeed.

We're using iOS SDK 4.0 with the PLBlocks compiler. The script needs
some adjustments if you are not using PLBlocks.

This produces the ARM library:

-----------------------------------------
export ARCH=arm-apple-darwin10
export ARCH_PREFIX=$ARCH-
export PLATFORM=iPhoneOS

export SDKVER="4.0"
export DEVROOT=/Developer/Platforms/${PLATFORM}.platform/Developer
export SDKROOT="$DEVROOT/SDKs/${PLATFORM}$SDKVER.sdk"
export PKG_CONFIG_PATH="$SDKROOT/usr/lib/pkgconfig:$DEVROOT/usr/lib/
pkgconfig"
export AS="$DEVROOT/usr/bin/as"
export ASCPP="$DEVROOT/usr/bin/as"
export AR="$DEVROOT/usr/bin/ar"
export RANLIB="$DEVROOT/usr/bin/ranlib"
export CPP="$DEVROOT/usr/bin/cpp"
export CXXCPP="$DEVROOT/usr/bin/cpp"
#export CC="$DEVROOT/usr/bin/arm-apple-darwin10-llvm-gcc-4.2"
PLBLOCKS="/Developer/Library/PLBlocks/Compilers/gcc42-iphoneos3.2"
export CC="$PLBLOCKS/usr/bin/${ARCH_PREFIX}gcc-4.2.1"
#export CXX="$DEVROOT/usr/bin/arm-apple-darwin10-llvm-g++-4.2"
export CXX="$PLBLOCKS/usr/bin/${ARCH_PREFIX}g++-4.2.1"
#export LD="$DEVROOT/usr/bin/ld"
export LD="$PLBLOCKS/usr/bin/ld"
export STRIP="$DEVROOT/usr/bin/strip"

export CPPFLAGS="-pipe -no-cpp-precomp -I$SDKROOT/usr/lib/gcc/${ARCH}/
4.2.1/include -I$SDKROOT/usr/include -I$DEVROOT/usr/include"
export CFLAGS="-fmessage-length=0 -pipe -fpascal-strings -no-cpp-
precomp -miphoneos-version-min=3.1.3 --sysroot='$SDKROOT' -isystem
$SDKROOT/usr/lib/gcc/${ARCH}/4.2.1/include -isystem $SDKROOT/usr/
include -isystem $DEVROOT/usr/include"
export CXXFLAGS="$CFLAGS -I$SDKROOT/usr/include/c++/4.2.1/${ARCH}/v6"
export LDFLAGS="--sysroot='$SDKROOT' -L$SDKROOT/usr/lib -L$DEVROOT/usr/
lib"

./configure --host=${ARCH} --with-protoc=protoc --enable-static --
disable-shared
------------------------------

And the i386 version for the simulator:
---------------------------------------
export ARCH=i686-apple-darwin10
export ARCH_PREFIX=${ARCH}-
export PLATFORM=iPhoneSimulator

export SDKVER="4.0"
export DEVROOT=/Developer/Platforms/${PLATFORM}.platform/Developer
export SDKROOT="$DEVROOT/SDKs/${PLATFORM}$SDKVER.sdk"
export PKG_CONFIG_PATH="$SDKROOT/usr/lib/pkgconfig:$DEVROOT/usr/lib/
pkgconfig"
export AS="$DEVROOT/usr/bin/as"
export ASCPP="$DEVROOT/usr/bin/as"
export AR="$DEVROOT/usr/bin/ar"
export RANLIB="$DEVROOT/usr/bin/ranlib"
export CPP="$DEVROOT/usr/bin/cpp"
export CXXCPP="$DEVROOT/usr/bin/cpp"
#export CC="$DEVROOT/usr/bin/arm-apple-darwin10-llvm-gcc-4.2"
PLBLOCKS="/Developer/Library/PLBlocks/Compilers/gcc42-macosx10.6"
export CC="$PLBLOCKS/usr/bin/${ARCH_PREFIX}gcc-4.2.1"
#export CXX="$DEVROOT/usr/bin/arm-apple-darwin10-llvm-g++-4.2"
export CXX="$PLBLOCKS/usr/bin/${ARCH_PREFIX}g++-4.2.1"
#export LD="$DEVROOT/usr/bin/ld"
export LD="$PLBLOCKS/usr/bin/ld"
export STRIP="$DEVROOT/usr/bin/strip"

export CPPFLAGS="-pipe -no-cpp-precomp -I$SDKROOT/usr/lib/gcc/${ARCH}/
4.2.1/include -I$SDKROOT/usr/include -I$DEVROOT/usr/include"
export CFLAGS="-fmessage-length=0 -pipe -fpascal-strings -no-cpp-
precomp -miphoneos-version-min=3.1.3 --sysroot='$SDKROOT' -isystem
$SDKROOT/usr/lib/gcc/${ARCH}/4.2.1/include -isystem $SDKROOT/usr/
include -isystem $DEVROOT/usr/include"
export CXXFLAGS="$CFLAGS -I$SDKROOT/usr/include/c++/4.2.1/${ARCH}/v6"
export LDFLAGS="--sysroot='$SDKROOT' -L$SDKROOT/usr/lib -L$DEVROOT/usr/
lib"

./configure --with-protoc=protoc --enable-static --disable-shared
------------------------------------------------------------------

Cheers,

Marcus

Kenton Varda

unread,
Nov 23, 2010, 9:49:03 PM11/23/10
to Marcus Better, Protocol Buffers
On Tue, Nov 23, 2010 at 3:47 AM, Marcus Better <mar...@better.se> wrote:
On 1 Nov, 16:39, Marcus Better <mar...@better.se> wrote:
> I wonder if anyone has built libprotobuf-lite for the iOS, and if
> there are any special pitfalls?

Yes I have, and of course I will share my findings with the world for
the benefit of mankind.

:)
 
I also have a follow-up question: the libprotobuf-lite.a static
library is about 500 kB which seems a little heavy. Is this normal?
I've tried to strip the symbol information but maybe that didn't
succeed.

Last I checked it was more like 100k on gcc/x86/linux, but on another compiler/arch/platform I suppose anything could happen.  Note that if you don't use extensions, you can drop extension_set.cc from the library which saves a considerable amount of binary size.
 

Cheers,

Marcus

--
You received this message because you are subscribed to the Google Groups "Protocol Buffers" group.
To post to this group, send email to prot...@googlegroups.com.
To unsubscribe from this group, send email to protobuf+u...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.


Reply all
Reply to author
Forward
0 new messages