News:

Latest versions:
Server plugin: 0.5.1
MVP dongle: 0.5.2
Raspberry Pi client: 0.5.2
Windows client: 0.5.2-1

Main Menu

Static build possible?

Started by noone, October 16, 2019, 21:36:29

Previous topic - Next topic

noone

Hi, I'm trying to build a static binary of vompclient for raspberry pi.

I added -static in the GNUmakefile in the LDFLAGS variable:....
ifeq ($(vomp_platform),raspberry)
$(info Raspberry pi flags)
LDFLAGS = -Wall -static $(PICTURES)
LIBS = -L/opt/vc/lib  -lpthread -lrt -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host   -lavformat -lavcodec -lavutil -lavresample
....


But now I'm getting the following compile error:....
g++ -Wall -static -Wl,--format=binary  -Wl,other/vdrhires.png  -Wl,other/wallpaper720p.jpg  -Wl,other/properties.png  -Wl,other/radio.png  -Wl,other/timers.png  -Wl,other/tv.png  -Wl,other/recordings.png -Wl,other/restart.png  -Wl,other/hd1080i.png   -Wl,other/hd720p.png    -Wl,other/sd576i.png   -Wl,other/txtoff.png   -Wl,other/txton.png  -Wl,other/dolbyoff.png -Wl,other/dolbyon.png   -Wl,other/recording.png -Wl,other/recfolder.png   -Wl,other/defposter.png   -Wl,--format=default    -DIPV6 -o vompclient  command.o tcp.o dsock.o thread.o timers.o i18n.o vdp6.o message.o messagequeue.o udp.o wol.o audio.o video.o log.o mutex.o vdr.o recman.o recording.o recinfo.o channel.o rectimer.o event.o directory.o mark.o option.o player.o playerradio.o vfeed.o afeed.o demuxer.o demuxervdr.o demuxerts.o stream.o region.o colour.o boxstack.o boxx.o tbboxx.o vrecording.o vinfo.o vquestion.o vrecordinglist.o vrecordinglistclassic.o vrecordinglistadvanced.o vepgsummary.o vepglistadvanced.o vmute.o vvolume.o vtimerlist.o vtimeredit.o vrecordingmenu.o vchannellist.o vwelcome.o vvideorec.o vepgsettimer.o vchannelselect.o vserverselect.o vconnect.o vepg.o vrecmove.o vradiorec.o vaudioselector.o vscreensaver.o vopts.o wselectlist.o wjpeg.o wsymbol.o wbutton.o wtextbox.o woptionpane.o woptionbox.o wremoteconfig.o wtabbar.o led.o remote.o mtd.o osd.o surface.o vpicturebanner.o abstractoption.o eventdispatcher.o vdrrequestpacket.o vdrresponsepacket.o vvideolivetv.o vsleeptimer.o playerlivetv.o playerliveradio.o wprogressbar.o bitmap.o dvbsubtitles.o tfeed.o vteletextview.o teletextdecodervbiebu.o teletxt/txtfont.o movieinfo.o seriesinfo.o wmovieview.o wseriesview.o tvmedia.o wtvmedia.o wpictureview.o  main.o threadp.o  osdvector.o surfacevector.o osdopenvg.o ledraspberry.o mtdraspberry.o videoomx.o audioomx.o imageomx.o wjpegsimple.o remotelinux.o signal.o   -L/opt/vc/lib  -lpthread -lrt -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host   -lavformat -lavcodec -lavutil -lavresample -ldl -lfontconfig -lfreetype -L/usr/lib/arm-linux-gnueabihf -lMagick++-6.Q16
/usr/bin/ld: cannot find -lbrcmEGL
/usr/bin/ld: cannot find -lbrcmOpenVG
/usr/bin/ld: cannot find -lopenmaxil
/usr/bin/ld: cannot find -lbcm_host
/usr/bin/ld: remotelinux.o: in function `__gnu_cxx::__normal_iterator<Option**, std::vector<Option*, std::allocator<Option*> > >::difference_type __gnu_cxx::operator-<Option**, std::vector<Option*, std::allocator<Option*> > >(__gnu_cxx::__normal_iterator<Option**, std::vector<Option*, std::allocator<Option*> > > const&, __gnu_cxx::__normal_iterator<Option**, std::vector<Option*, std::allocator<Option*> > > const&)':
/usr/include/libcec/cecloader.h:124: warning: Using 'dlopen' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: tcp.o: in function `TCP::connectTo(char*, unsigned short)':
/home/pi/vompclient/tcp.cc:151: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
collect2: error: ld returned 1 exit status
make: *** [GNUmakefile:123: vompclient] Error 1
pi@raspberrypi:~/vompclient $


Is building a static binary even possible at all?
It would be nice to run a minimal busybox and just the vompclient, nothing else.
And with the newly added IPv6 support there isn't even a need for a dhcp client any more. 8)

Best regards
NoOne

Chris

Hi,

For obvious reasons I share your desire to build it statically - I would be able to distribute a much smaller image file and it would boot on a Pi much faster with some kind of Busybox build rather than a whole systemd O/S.

I remember trying it about a month back and got to exactly the same situation you showed. At the time I shelved the idea thinking it would be very difficult / impossible. But, given your post I've had another look... I still think it's going to be very difficult, but maybe not impossible if a mostly static binary is acceptable.

Firstly the warnings - Well they're only warnings - it does imply that it should be possible to have a statically linked vompclient binary with some number of .so files alongside somehow. It depends how many library files "the shared libraries from the glibc version used" means. If it's a few then I would say this is feasible. If it's hundreds - basically a standard /lib & /usr/lib collection, then clearly it's not feasible. I haven't got as far trying this yet.

Secondly - all the libraries used except the Broadcom ones in /opt/vc. I have been working through some of these and it is possible to build some in statically - see the linking script below. The next major set of libraries to tackle is the ImageMagick ones - no small task. I tried making pthread and avcodec static but they eventually depend on one of the Broadcom libs, so they may be possible once the Broadcom problem is solved.

Thirdly - the Broadcom libraries. Broadcom appear to permit redistribution of the libs found in /opt/vc, so including that whole set in an image and dynamically linking to them for me would be acceptable. However, because the .a file versions of those libs aren't available it means any other library you try to make static for vompclient that depends on something in the Broadcom libraries won't link. A second however however, is that it looks like the source code for those libraries in /opt/vc/lib is available (to my surprise) at https://github.com/raspberrypi/userland. If this really is the case then it should be possible to compile the missing .a files, allowing other libraries to then be linked statically.

At best it may be possible to statically link everything except the glibc libraries the warnings are about.

The script below is a work-in-progress. To try it, compile vompclient normally first - this is only the last step linker command. It links what it can statically, and then dynamically links the rest. In theory libs can be moved one by one from dynamic to static. In practice it's quite messy. I think the next bit to work on is the Broadcom libraries, since other libraries end up depending on some low level Pi memory code and they can't be made static until the the Broadcom libraries are.

If you feel like continuing this work please do!

Also if anyone knows a better way of doing any of this, please chip in.

#!/bin/bash

set -x

BLOBS="-Wl,--format=binary -Wl,other/vdrhires.png -Wl,other/wallpaper720p.jpg -Wl,other/properties.png -Wl,other/radio.png -Wl,other/timers.png -Wl,other/tv.png -Wl,other/recordings.png -Wl,other/restart.png -Wl,other/hd1080i.png -Wl,other/hd720p.png -Wl,other/sd576i.png -Wl,other/txtoff.png -Wl,other/txton.png -Wl,other/dolbyoff.png -Wl,other/dolbyon.png -Wl,other/recording.png -Wl,other/recfolder.png -Wl,other/defposter.png -Wl,--format=default"
OBJECTS="command.o tcp.o dsock.o thread.o timers.o i18n.o vdp6.o message.o messagequeue.o udp.o wol.o audio.o video.o log.o mutex.o vdr.o recman.o recording.o recinfo.o channel.o rectimer.o event.o directory.o mark.o option.o player.o playerradio.o vfeed.o afeed.o demuxer.o demuxervdr.o demuxerts.o stream.o region.o colour.o boxstack.o boxx.o tbboxx.o vrecording.o vinfo.o vquestion.o vrecordinglist.o vrecordinglistclassic.o vrecordinglistadvanced.o vepgsummary.o vepglistadvanced.o vmute.o vvolume.o vtimerlist.o vtimeredit.o vrecordingmenu.o vchannellist.o vwelcome.o vvideorec.o vepgsettimer.o vchannelselect.o vserverselect.o vconnect.o vepg.o vrecmove.o vradiorec.o vaudioselector.o vscreensaver.o vopts.o wselectlist.o wjpeg.o wsymbol.o wbutton.o wtextbox.o woptionpane.o woptionbox.o wremoteconfig.o wtabbar.o led.o remote.o mtd.o osd.o surface.o vpicturebanner.o abstractoption.o eventdispatcher.o vdrrequestpacket.o vdrresponsepacket.o vvideolivetv.o vsleeptimer.o playerlivetv.o playerliveradio.o wprogressbar.o bitmap.o dvbsubtitles.o tfeed.o vteletextview.o teletextdecodervbiebu.o teletxt/txtfont.o movieinfo.o seriesinfo.o wmovieview.o wseriesview.o tvmedia.o wtvmedia.o wpictureview.o main.o threadp.o  osdvector.o surfacevector.o osdopenvg.o ledraspberry.o mtdraspberry.o videoomx.o audioomx.o imageomx.o wjpegsimple.o remotelinux.o signal.o"

# All dynamic
# LIBSSTATIC=""
# LIBSDYNAMIC="-Wl,-Bdynamic -lpthread -lrt -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host -lavformat -lavcodec -lavutil -lavresample -ldl -lfontconfig -lfreetype -lMagick++-6.Q16"

# WIP
LIBSSTATIC="-Wl,-Bstatic -lfontconfig -lexpat -luuid -lfreetype -lpng -lavformat -lavresample -lavutil -lswresample -lz -lrt"
LIBSDYNAMIC="-Wl,-Bdynamic -lbrcmEGL -lbrcmOpenVG -lopenmaxil -lbcm_host -lpthread -lavcodec -lMagick++-6.Q16 -ldl"

g++ -Wall -o vompclient -L/opt/vc/lib -L/usr/lib/arm-linux-gnueabihf $BLOBS $OBJECTS $LIBSSTATIC $LIBSDYNAMIC


noone

Thanks for the big explanation!
I always thought creating a static build ld just takes every so-file and "appends" it to the final binary but that sounds very complicated now.

I also experimented with a static busybox using the script-wrapper option instead of symlinks for the applets.
This is cool so you can use a single vfat partition on the sdcard and make it also the rootfs.
So the final approach would be, take a new sdcard, extra all the files from zip to it, done!

Will try to compile the Broadcom libraries and play around, maybe I'll get some where.
Best regards
NoOne

Chris

An idea I had... It's no static build but it might be of use. How about compiling a dynamic vompclient then getting the list of so files with "ldd vompclient", copying every single one and the vompclient binary to the target empty O/S and using LD_LIBRARY_PATH to direct it to all the so files? It sounds too simple to work...

Good luck with the Broadcom stuff.

noone

#4
sounds also interessting 8) ...
pi@raspberrypi:~/vompclient $ ldd vompclient
linux-vdso.so.1 (0x7eb85000)
/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v7l.so (0x76f17000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0x76eed000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0x76ed6000)
libbrcmEGL.so => /opt/vc/lib/libbrcmEGL.so (0x76e9d000)
libbrcmOpenVG.so => /opt/vc/lib/libbrcmOpenVG.so (0x76e78000)
libopenmaxil.so => /opt/vc/lib/libopenmaxil.so (0x76e62000)
libbcm_host.so => /opt/vc/lib/libbcm_host.so (0x76e38000)
libavformat.so.58 => /usr/lib/arm-linux-gnueabihf/libavformat.so.58 (0x76c0a000)
libavcodec.so.58 => /usr/lib/arm-linux-gnueabihf/libavcodec.so.58 (0x758a8000)
libavutil.so.56 => /usr/lib/arm-linux-gnueabihf/libavutil.so.56 (0x7581f000)
libavresample.so.4 => /usr/lib/arm-linux-gnueabihf/libavresample.so.4 (0x757fd000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0x757ea000)
libfontconfig.so.1 => /usr/lib/arm-linux-gnueabihf/libfontconfig.so.1 (0x757a2000)
libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0x756ff000)
libMagick++-6.Q16.so.8 => /usr/lib/arm-linux-gnueabihf/libMagick++-6.Q16.so.8 (0x7568a000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0x75543000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0x754c1000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0x75494000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0x75346000)
/lib/ld-linux-armhf.so.3 (0x76f2c000)
libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0x75330000)
libvcos.so => /opt/vc/lib/libvcos.so (0x75317000)
libbrcmGLESv2.so => /opt/vc/lib/libbrcmGLESv2.so (0x752f0000)
libxml2.so.2 => /usr/lib/arm-linux-gnueabihf/libxml2.so.2 (0x75173000)
libbz2.so.1.0 => /lib/arm-linux-gnueabihf/libbz2.so.1.0 (0x75153000)
libgme.so.0 => /usr/lib/arm-linux-gnueabihf/libgme.so.0 (0x75105000)
libopenmpt.so.0 => /usr/lib/arm-linux-gnueabihf/libopenmpt.so.0 (0x74f47000)
libchromaprint.so.1 => /usr/lib/arm-linux-gnueabihf/libchromaprint.so.1 (0x74f26000)
libbluray.so.2 => /usr/lib/arm-linux-gnueabihf/libbluray.so.2 (0x74ed0000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0x74ea5000)
libgnutls.so.30 => /usr/lib/arm-linux-gnueabihf/libgnutls.so.30 (0x74d03000)
libssh-gcrypt.so.4 => /usr/lib/arm-linux-gnueabihf/libssh-gcrypt.so.4 (0x74c84000)
libswresample.so.3 => /usr/lib/arm-linux-gnueabihf/libswresample.so.3 (0x74c5c000)
libvpx.so.5 => /usr/lib/arm-linux-gnueabihf/libvpx.so.5 (0x74b5b000)
libwebpmux.so.3 => /usr/lib/arm-linux-gnueabihf/libwebpmux.so.3 (0x74b43000)
libwebp.so.6 => /usr/lib/arm-linux-gnueabihf/libwebp.so.6 (0x74adf000)
liblzma.so.5 => /lib/arm-linux-gnueabihf/liblzma.so.5 (0x74aae000)
libmmal_core.so => /opt/vc/lib/libmmal_core.so (0x74a90000)
libmmal_util.so => /opt/vc/lib/libmmal_util.so (0x74a70000)
libmmal_vc_client.so => /opt/vc/lib/libmmal_vc_client.so (0x74a55000)
librsvg-2.so.2 => /usr/lib/arm-linux-gnueabihf/librsvg-2.so.2 (0x74647000)
libgobject-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgobject-2.0.so.0 (0x745ea000)
libglib-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libglib-2.0.so.0 (0x744da000)
libcairo.so.2 => /usr/lib/arm-linux-gnueabihf/libcairo.so.2 (0x743df000)
libzvbi.so.0 => /usr/lib/arm-linux-gnueabihf/libzvbi.so.0 (0x7435c000)
libsnappy.so.1 => /usr/lib/arm-linux-gnueabihf/libsnappy.so.1 (0x74345000)
libaom.so.0 => /usr/lib/arm-linux-gnueabihf/libaom.so.0 (0x74049000)
libcodec2.so.0.8.1 => /usr/lib/arm-linux-gnueabihf/libcodec2.so.0.8.1 (0x73fe0000)
libgsm.so.1 => /usr/lib/arm-linux-gnueabihf/libgsm.so.1 (0x73fc5000)
libmp3lame.so.0 => /usr/lib/arm-linux-gnueabihf/libmp3lame.so.0 (0x73f49000)
libopenjp2.so.7 => /usr/lib/arm-linux-gnueabihf/libopenjp2.so.7 (0x73eee000)
libopus.so.0 => /usr/lib/arm-linux-gnueabihf/libopus.so.0 (0x73e8f000)
libshine.so.3 => /usr/lib/arm-linux-gnueabihf/libshine.so.3 (0x73e75000)
libspeex.so.1 => /usr/lib/arm-linux-gnueabihf/libspeex.so.1 (0x73e4e000)
libtheoraenc.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoraenc.so.1 (0x73e0b000)
libtheoradec.so.1 => /usr/lib/arm-linux-gnueabihf/libtheoradec.so.1 (0x73de3000)
libtwolame.so.0 => /usr/lib/arm-linux-gnueabihf/libtwolame.so.0 (0x73db3000)
libvorbis.so.0 => /usr/lib/arm-linux-gnueabihf/libvorbis.so.0 (0x73d7c000)
libvorbisenc.so.2 => /usr/lib/arm-linux-gnueabihf/libvorbisenc.so.2 (0x73cea000)
libwavpack.so.1 => /usr/lib/arm-linux-gnueabihf/libwavpack.so.1 (0x73cb6000)
libx264.so.155 => /usr/lib/arm-linux-gnueabihf/neon/vfp/libx264.so.155 (0x73a6a000)
libx265.so.165 => /usr/lib/arm-linux-gnueabihf/libx265.so.165 (0x737b0000)
libxvidcore.so.4 => /usr/lib/arm-linux-gnueabihf/libxvidcore.so.4 (0x736c0000)
libva.so.2 => /usr/lib/arm-linux-gnueabihf/libva.so.2 (0x73691000)
libva-drm.so.2 => /usr/lib/arm-linux-gnueabihf/libva-drm.so.2 (0x7367c000)
libva-x11.so.2 => /usr/lib/arm-linux-gnueabihf/libva-x11.so.2 (0x73667000)
libvdpau.so.1 => /usr/lib/arm-linux-gnueabihf/libvdpau.so.1 (0x73653000)
libX11.so.6 => /usr/lib/arm-linux-gnueabihf/libX11.so.6 (0x73531000)
libdrm.so.2 => /usr/lib/arm-linux-gnueabihf/libdrm.so.2 (0x73512000)
libexpat.so.1 => /lib/arm-linux-gnueabihf/libexpat.so.1 (0x734d1000)
libuuid.so.1 => /lib/arm-linux-gnueabihf/libuuid.so.1 (0x734ba000)
libpng16.so.16 => /usr/lib/arm-linux-gnueabihf/libpng16.so.16 (0x7347e000)
libMagickCore-6.Q16.so.6 => /usr/lib/arm-linux-gnueabihf/libMagickCore-6.Q16.so.6 (0x73202000)
libMagickWand-6.Q16.so.6 => /usr/lib/arm-linux-gnueabihf/libMagickWand-6.Q16.so.6 (0x730dd000)
libicui18n.so.63 => /usr/lib/arm-linux-gnueabihf/libicui18n.so.63 (0x72e8d000)
libicuuc.so.63 => /usr/lib/arm-linux-gnueabihf/libicuuc.so.63 (0x72d07000)
libicudata.so.63 => /usr/lib/arm-linux-gnueabihf/libicudata.so.63 (0x71309000)
libmpg123.so.0 => /usr/lib/arm-linux-gnueabihf/libmpg123.so.0 (0x712ac000)
libvorbisfile.so.3 => /usr/lib/arm-linux-gnueabihf/libvorbisfile.so.3 (0x71294000)
libp11-kit.so.0 => /usr/lib/arm-linux-gnueabihf/libp11-kit.so.0 (0x7118f000)
libidn2.so.0 => /usr/lib/arm-linux-gnueabihf/libidn2.so.0 (0x71163000)
libunistring.so.2 => /usr/lib/arm-linux-gnueabihf/libunistring.so.2 (0x70fe7000)
libtasn1.so.6 => /usr/lib/arm-linux-gnueabihf/libtasn1.so.6 (0x70fc7000)
libnettle.so.6 => /usr/lib/arm-linux-gnueabihf/libnettle.so.6 (0x70f83000)
libhogweed.so.4 => /usr/lib/arm-linux-gnueabihf/libhogweed.so.4 (0x70f42000)
libgmp.so.10 => /usr/lib/arm-linux-gnueabihf/libgmp.so.10 (0x70ec9000)
libgcrypt.so.20 => /lib/arm-linux-gnueabihf/libgcrypt.so.20 (0x70def000)
libgssapi_krb5.so.2 => /usr/lib/arm-linux-gnueabihf/libgssapi_krb5.so.2 (0x70da5000)
libsoxr.so.0 => /usr/lib/arm-linux-gnueabihf/libsoxr.so.0 (0x70d43000)
libvcsm.so => /opt/vc/lib/libvcsm.so (0x70d29000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgdk_pixbuf-2.0.so.0 (0x70cf7000)
libgio-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgio-2.0.so.0 (0x70b7c000)
libpangocairo-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangocairo-1.0.so.0 (0x70b61000)
libpangoft2-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpangoft2-1.0.so.0 (0x70b3f000)
libpango-1.0.so.0 => /usr/lib/arm-linux-gnueabihf/libpango-1.0.so.0 (0x70af0000)
libcroco-0.6.so.3 => /usr/lib/arm-linux-gnueabihf/libcroco-0.6.so.3 (0x70aae000)
libffi.so.6 => /usr/lib/arm-linux-gnueabihf/libffi.so.6 (0x70a96000)
libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0x70a1f000)
libpixman-1.so.0 => /usr/lib/arm-linux-gnueabihf/libpixman-1.so.0 (0x70944000)
libxcb-shm.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-shm.so.0 (0x70931000)
libxcb.so.1 => /usr/lib/arm-linux-gnueabihf/libxcb.so.1 (0x70902000)
libxcb-render.so.0 => /usr/lib/arm-linux-gnueabihf/libxcb-render.so.0 (0x708e7000)
libXrender.so.1 => /usr/lib/arm-linux-gnueabihf/libXrender.so.1 (0x708ce000)
libXext.so.6 => /usr/lib/arm-linux-gnueabihf/libXext.so.6 (0x708af000)
libogg.so.0 => /usr/lib/arm-linux-gnueabihf/libogg.so.0 (0x70898000)
libXfixes.so.3 => /usr/lib/arm-linux-gnueabihf/libXfixes.so.3 (0x70883000)
liblcms2.so.2 => /usr/lib/arm-linux-gnueabihf/liblcms2.so.2 (0x7082c000)
liblqr-1.so.0 => /usr/lib/arm-linux-gnueabihf/liblqr-1.so.0 (0x70811000)
libfftw3.so.3 => /usr/lib/arm-linux-gnueabihf/libfftw3.so.3 (0x70713000)
libltdl.so.7 => /usr/lib/arm-linux-gnueabihf/libltdl.so.7 (0x706fb000)
libgomp.so.1 => /usr/lib/arm-linux-gnueabihf/libgomp.so.1 (0x706c3000)
libgpg-error.so.0 => /lib/arm-linux-gnueabihf/libgpg-error.so.0 (0x70699000)
libkrb5.so.3 => /usr/lib/arm-linux-gnueabihf/libkrb5.so.3 (0x705dc000)
libk5crypto.so.3 => /usr/lib/arm-linux-gnueabihf/libk5crypto.so.3 (0x7059c000)
libcom_err.so.2 => /lib/arm-linux-gnueabihf/libcom_err.so.2 (0x70589000)
libkrb5support.so.0 => /usr/lib/arm-linux-gnueabihf/libkrb5support.so.0 (0x7056f000)
libkeyutils.so.1 => /lib/arm-linux-gnueabihf/libkeyutils.so.1 (0x7055b000)
libresolv.so.2 => /lib/arm-linux-gnueabihf/libresolv.so.2 (0x70537000)
libgmodule-2.0.so.0 => /usr/lib/arm-linux-gnueabihf/libgmodule-2.0.so.0 (0x70523000)
libmount.so.1 => /lib/arm-linux-gnueabihf/libmount.so.1 (0x704c2000)
libselinux.so.1 => /lib/arm-linux-gnueabihf/libselinux.so.1 (0x70490000)
libharfbuzz.so.0 => /usr/lib/arm-linux-gnueabihf/libharfbuzz.so.0 (0x70392000)
libthai.so.0 => /usr/lib/arm-linux-gnueabihf/libthai.so.0 (0x70378000)
libfribidi.so.0 => /usr/lib/arm-linux-gnueabihf/libfribidi.so.0 (0x7034e000)
libXau.so.6 => /usr/lib/arm-linux-gnueabihf/libXau.so.6 (0x7033b000)
libXdmcp.so.6 => /usr/lib/arm-linux-gnueabihf/libXdmcp.so.6 (0x70326000)
libblkid.so.1 => /lib/arm-linux-gnueabihf/libblkid.so.1 (0x702ce000)
libgraphite2.so.3 => /usr/lib/arm-linux-gnueabihf/libgraphite2.so.3 (0x7029d000)
libdatrie.so.1 => /usr/lib/arm-linux-gnueabihf/libdatrie.so.1 (0x70287000)
libbsd.so.0 => /usr/lib/arm-linux-gnueabihf/libbsd.so.0 (0x7025f000)
pi@raspberrypi:~/vompclient $

noone

Ha! that totally works. Just copied over every library to /lib on the vfat partition and booted with that as rootfs. Still having some issues with fonts (everything is monospaced) but I will post a ZIP which conaints all files for a blank sdcard with only a fat partition.