[Spice-devel] Porting snappy/libspicec-glib.so onto Android-ARM

Shuxiang Lim shohyanglim at gmail.com
Thu Mar 31 00:15:48 PDT 2011


Hi,
  I wonder if there anybody has tried my solution,for I've got no feedback
till now?
  Now,because the deps of spicec-gtk are so MANY,thus use the static libs
shall be economic,
hence the new snappy/libspicec.so:
*# arm-eabi-readelf -d libspicec.so
Dynamic section at offset 0x38bf98 contains 22 entries:
  Tag        Type                         Name/Value
 0x00000001 (NEEDED)                     Shared library: [libdl.so]
 0x00000001 (NEEDED)                     Shared library: [libstdc++.so]
 0x00000001 (NEEDED)                     Shared library: [libz.so]
 0x00000001 (NEEDED)                     Shared library: [libc.so]
 0x00000001 (NEEDED)                     Shared library: [libcrypto.so]
 0x00000001 (NEEDED)                     Shared library: [libssl.so]
 0x00000001 (NEEDED)                     Shared library: [libm.so]
...*
all the deps of libspicec.so can be found in android system,the other deps
such as glibs are all built staticaly into libspicec.
  But I got another bug, when staticaly linked,libcrypto and libssl will
spit SEGFAULT in running(the same as when using the shared ones in Android
system),but my self-compiled shared libssl and libcrypto work well, why?
Does this mean there is some buggy use in
spice-channel.c :spice_channel_send_auth()? The static or system's shared
libssl/libcrypto always die at RSA_size() or BIO_free() in
spice_channel_send_auth()).
  Would Somebody do a try or check on this?
  I'm keen on that.
  Rgrds.

On Fri, Mar 25, 2011 at 3:52 PM, Shuxiang Lim <shohyanglim at gmail.com> wrote:

> Hi!
>   There already exist libssl.so and libcrypto.so in Android (in
> /system/lib/ of my device),
> but my snappy/libspicec.so got only SEGFAULT if using them,I hope someone
> has time to check why.
>   Besides these. All the functions in snappy/libspicec.so works well with
> all my built libs.
>   .eg. I use this cmd to start qemu to fore the use
> pixman/jpeg/zlib/openssl:
> *#sudo qemu-system-x86_64 ... -spice port=5900,password=gnoll,\
> jpeg-wan-compression=always,\
> zlib-glz-wan-compression=always
>    On the device:
> #LD_LIBRARY_PATH=./lib ./snappy -h 192.168.1.31 -p 5900 -w gnoll -o
> ahoo.ppm
> (snappy:3157): GSpice-DEBUG: spice-session.c:803 session: disconnecting 0
> (snappy:3157): GSpice-DEBUG: spice-channel.c:127 main-1:0:
> spice_channel_constructed
> (snappy:3157): GSpice-DEBUG: spice-channel.c:1400 Open coroutine starting
> 0x22018
> (snappy:3157): GSpice-DEBUG: spice-channel.c:1257 Started background
> coroutine 0x22044
> (snappy:3157): GSpice-DEBUG: spice-session.c:900 Resolving host
> 192.168.1.31 5900
> (snappy:3157): GSpice-DEBUG: spice-session.c:913 Trying one socket
> (snappy:3157): GSpice-DEBUG: spice-session.c:864 Socket pending
> (snappy:3157): GSpice-DEBUG: spice-session.c:879 Finally connected
> (snappy:3157): GSpice-DEBUG: spice-channel.c:931 main-1:0:
> spice_channel_recv_link_msg: 0 caps
> (snappy:3157): GSpice-DEBUG: spice-channel.c:793 main-1:0: channel up,
> state 5
> (snappy:3157): GSpice-DEBUG: spice-session.c:1015 set mm time: 25115964
> (snappy:3157): GSpice-DEBUG: spice-channel.c:127 cursor-4:0:
> spice_channel_constructed
> (snappy:3157): GSpice-DEBUG: spice-channel.c:127 display-2:0:
> spice_channel_constructed
> (snappy:3157): GSpice-DEBUG: spice-channel.c:127 inputs-3:0:
> spice_channel_constructed
> (snappy:3157): GSpice-DEBUG: spice-channel.c:1400 Open coroutine starting
> 0x2a000
> (snappy:3157): GSpice-DEBUG: spice-channel.c:1257 Started background
> coroutine 0x2a02c
> (snappy:3157): GSpice-DEBUG: spice-session.c:900 Resolving host
> 192.168.1.31 5900
> (snappy:3157): GSpice-DEBUG: spice-session.c:913 Trying one socket
> (snappy:3157): GSpice-DEBUG: spice-session.c:864 Socket pending
> (snappy:3157): GSpice-DEBUG: spice-session.c:879 Finally connected
> (snappy:3157): GSpice-DEBUG: spice-channel.c:931 display-2:0:
> spice_channel_recv_link_msg: 0 caps
> (snappy:3157): GSpice-DEBUG: spice-channel.c:793 display-2:0: channel up,
> state 5
> (snappy:3157): GSpice-DEBUG: channel-display.c:522 display: create primary
> canvas
> (snappy:3157): GSpice-DEBUG: snappy.c:44 primary_create: 640x480, format 32
> wrote screen shot to ahoo.ppm
> *  Best Rgrds.
>
>
> On Fri, Mar 25, 2011 at 3:17 PM, Shuxiang Lim <shohyanglim at gmail.com>wrote:
>
>>
>> All the files bz2ed.
>>
>> On Fri, Mar 25, 2011 at 2:58 PM, Shuxiang Lim <shohyanglim at gmail.com>wrote:
>>
>>> amakefile attathed.
>>>
>>>
>>> On Fri, Mar 25, 2011 at 2:41 PM, Shuxiang Lim <shohyanglim at gmail.com>wrote:
>>>
>>>> Hi,guys!
>>>>    This is my instructions and patches for porting
>>>> snappy/libspicec-glib.so extracted from spicec-gtk-0.5 onto Android-ARM.
>>>>    It's still nascent and raw though, more hacking is needed!
>>>>    These are my steps, suppose you're familiar with cross compiling.
>>>>
>>>> 1.I use the android NDK provided by Mozzila which has nearly full C++
>>>> support:
>>>>
>>>> http://ftp.mozilla.org/pub/mozilla.org/mobile/source/android-ndk-r4c-0moz3.tar.bz2
>>>> and I have modified Andrew Ross's perl script:agcc to extract and use
>>>> the toolchain from this NDK (attached)
>>>> 2. Then I cross compile glib2.28.1 onto Android in this order:
>>>> 1)libiconv-1.13.1.tar.gz:
>>>> configured by:
>>>> *CC=agcc CXX=agcc LD=arm-eabi-ld RANLIB=arm-eabi-ranlib \
>>>> PKG_CONFIG_LIBDIR=/data/local/lib/pkgconfig:/data/local/share/pkgconfig/
>>>> \
>>>>     ./configure \
>>>>     --prefix=/data/local \
>>>>     --host=arm-eabi-linux \*
>>>> *    --enable-shared \*
>>>>  2)gettext-0.18.1.1.tar.gz
>>>> configured by:
>>>> *CC=agcc CPPFLAGS="-I/data/local/include" LDFLAGS="-L/data/local/lib"
>>>> CXX=agcc LD=arm-eabi-ld RANLIB=arm-eabi-ranlib \
>>>> PKG_CONFIG_LIBDIR=/data/local/lib/pkgconfig:/data/local/share/pkgconfig/
>>>> \
>>>>     ./configure \
>>>>     --prefix=/data/local \
>>>>     --host=arm-eabi-linux \
>>>>     --enable-shared \
>>>>     --cache-file=arm.cache \
>>>>     --without-included-regex \
>>>>     --disable-java --disable-openmp --without-libiconv-prefix
>>>> --without-libintl-prefix --without-libglib-2.0-prefix
>>>> --without-libcroco-0.6-prefix --with-included-libxml
>>>> --without-libncurses-prefix --without-libtermcap-prefix
>>>> --without-libcurses-prefix --without-libexpat-prefix --without-emacs
>>>>   * But the build of gettext will not fully succeed,never mind, I need
>>>> only libintl.so so just make install.
>>>>
>>>> 3)  glib-2.28.1.tar.gz
>>>> 1st, do patching with my attached file
>>>> *#patch -p0 < ** glib-android.patch*
>>>>  2nd, write this into the cache file arm.cache:
>>>> *#cat > arm.cache
>>>> ac_cv_android_arm=yes
>>>> glib_cv_stack_grows=no
>>>> ** glib_cv_uscore=no*
>>>> *ac_cv_func_posix_getpwuid_r=no
>>>> ac_cv_func_posix_getgrgid_r=no*
>>>> ctrl-D
>>>> 3rd, make sure you have the tools such as glib-genmarshaller of right
>>>> vision in your host machine(you may need to first install glib on your host
>>>> machine)
>>>> 4th, autoconf;then configured  the same as libiconv.
>>>> 5td, make;make install
>>>>
>>>> 3. Also I have to port pixman and openssl and jpeg onto android.
>>>> 1)pixman-0.20.0,jpeg-6b: config. make;make install same as libiconv
>>>> 2)openssl-1.0.0: config by:
>>>> ./config no-asm shared --prefix=/data/local/
>>>> then modify the Makefile:gcc-->agcc remove the -m64..etc.
>>>> make;make install
>>>>
>>>> 4. for snappy and libspicec-glib.so
>>>> 1).tar xf spice-gtk-0.5.tar.gz
>>>> 2).#patch -p0 < snappy-android.patch (file attached)
>>>> 3).ensure to succeed in the normal ./configure and make on the current
>>>> host machine to generate config.h and some other files.
>>>> *#CC=gcc \
>>>> ./configure \
>>>> --prefix=/usr/local/mylocal \
>>>> --enable-shared \
>>>> --cache-file=arm.cache \
>>>> --with-coroutine=gthread
>>>> #make
>>>>
>>>> *4).#cd gtk/
>>>> 5). you may use or reference my attached file :amakfile
>>>>   #make clean -f amakefile
>>>>   #make -f amakefile
>>>> 6) put the lib*.so files and exec. file snappy onto android device and
>>>> run.
>>>> *#LD_LIBRARY_PATH=/system/lib:/data/local/lib ./snappy -h 192.168.1.31
>>>> -p 5900 -o ahoo.ppm*
>>>>
>>>> You may have check my snapped image ahoo.jpeg<--ahoo.ppm and run-logs in
>>>> my blogs:
>>>> http://blog.csdn.net/rozenix/archive/2011/03/25/6277742.aspx
>>>> http://blog.csdn.net/rozenix/archive/2011/03/25/6277647.aspx
>>>>
>>>> That's it! Mail me if you've got any problem!
>>>> Happy hacking!
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20110331/18edd69f/attachment.html>


More information about the Spice-devel mailing list