Author Topic: Static build possible?  (Read 175 times)

Offline noone

  • Jr. Member
  • **
  • Posts: 6
    • View Profile
Static build possible?
« on: October 16, 2019, 21:36:29 »
Hi, I'm trying to build a static binary of vompclient for raspberry pi.

I added -static in the GNUmakefile in the LDFLAGS variable:
Code: [Select]
....
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:
Code: [Select]
....
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

Offline Chris

  • Administrator
  • Hero Member
  • *****
  • Posts: 541
    • View Profile
    • Email
Re: Static build possible?
« Reply #1 on: October 19, 2019, 16:35:33 »
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.

Code: [Select]
#!/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

Offline noone

  • Jr. Member
  • **
  • Posts: 6
    • View Profile
Re: Static build possible?
« Reply #2 on: October 21, 2019, 06:56:23 »
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

Offline Chris

  • Administrator
  • Hero Member
  • *****
  • Posts: 541
    • View Profile
    • Email
Re: Static build possible?
« Reply #3 on: October 21, 2019, 15:52:11 »
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.

Offline noone

  • Jr. Member
  • **
  • Posts: 6
    • View Profile
Re: Static build possible?
« Reply #4 on: October 22, 2019, 10:50:09 »
sounds also interessting 8) ...
Code: [Select]
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 $
« Last Edit: October 23, 2019, 07:50:12 by noone »

Offline noone

  • Jr. Member
  • **
  • Posts: 6
    • View Profile
Re: Static build possible?
« Reply #5 on: November 18, 2019, 07:02:41 »
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.