Figures... Turns out I had a rogue libpng 3.x from some unknown source on the dev machine and because the sources have been altered to statically link to most of the external libraries this became obscured. I really really really like ldd to show the same dependencies (except for libspotify then).
Results 11 to 14 of 14
Thread: Building jive from source
-
2021-03-22, 11:09 #11
- Join Date
- Dec 2020
- Posts
- 261
-
2021-04-08, 11:59 #12
- Join Date
- Dec 2020
- Posts
- 261
Wow! This is pretty steep. I managed to fix the issue with the images and my resulting jive executable is now half the size of the original. And I didn't even strip it. Seems like the original jive already had the same libraries linked in statically as it linked to dynamically. This software is buggy as hell...
Either way, the lua_number patch seems to be doing fine. Shamefully I had a power outage that caused the Touch to restart from zero, but my Radio is still going steady at currently 28+ days uptime. 21 days to go...
-
2021-04-09, 05:51 #13
That great news that you have the lua number patch working. I look forward to trying it out in the community firmware. Do you have a diff of the required changes that I could test?
The logitech jive binary has the AAC decoder linked statically as it was proprietary at that time but other libraries are only dynamically linked.
Code:# ls -lh jive -rwxr-xr-x 1 root root 1.7M Dec 31 1969 jive # ldd jive libtolua++.so => /usr/lib/libtolua++.so (0x40028000) libSDL_image-1.2.so.0 => /usr/lib/libSDL_image-1.2.so.0 (0x40037000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0x4005b000) libz.so.1 => /usr/lib/libz.so.1 (0x4008c000) libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x400a6000) libSDL_ttf-2.0.so.0 => /usr/lib/libSDL_ttf-2.0.so.0 (0x400fc000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x40109000) libSDL_gfx.so.0 => /usr/lib/libSDL_gfx.so.0 (0x40176000) libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0x40192000) libmad.so.0 => /usr/lib/libmad.so.0 (0x401e1000) libvorbisidec.so.1 => /usr/lib/libvorbisidec.so.1 (0x40201000) libresolv.so.2 => /lib/libresolv.so.2 (0x40224000) libspotify.so.6 => not found - because it's obsolete and has been removed from the community firmware. libasound.so.2 => /usr/lib/libasound.so.2 (0x40243000) libm.so.6 => /lib/libm.so.6 (0x402bf000) libdl.so.2 => /lib/libdl.so.2 (0x40360000) librt.so.1 => /lib/librt.so.1 (0x4036d000) libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x4037d000) libpthread.so.0 => /lib/libpthread.so.0 (0x403ea000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4040a000) libc.so.6 => /lib/libc.so.6 (0x4041d000) libogg.so.0 => /usr/lib/libogg.so.0 (0x40566000) /lib/ld-linux.so.3 (0x40000000)
The AAC decoder library is quite large compared to all the other ones. I'm using the android fdk-aac library equivalent and in it's shared lib form it's 1457172 bytes.
So I don't think you are comparing binaries with the same feature sets.
The jive binary in the community firmware for the radio is 371,188 bytes and that includes AAC support that's dynamically linked. So the size difference is close to the removal of the static AAC library.
Code:# ./ldd /usr/bin/jive libtolua++.so => /usr/lib/libtolua++.so (0x40028000) libSDL_image-1.2.so.0 => /usr/lib/libSDL_image-1.2.so.0 (0x40037000) libpng12.so.0 => /usr/lib/libpng12.so.0 (0x4005b000) libz.so.1 => /usr/lib/libz.so.1 (0x4008c000) libjpeg.so.8 => /usr/lib/libjpeg.so.8 (0x400a6000) libSDL_ttf-2.0.so.0 => /usr/lib/libSDL_ttf-2.0.so.0 (0x400fc000) libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x40109000) libSDL_gfx.so.0 => /usr/lib/libSDL_gfx.so.0 (0x40176000) libFLAC.so.8 => /usr/lib/libFLAC.so.8 (0x40192000) libogg.so.0 => /usr/lib/libogg.so.0 (0x401e1000) libmad.so.0 => /usr/lib/libmad.so.0 (0x401ed000) libvorbisidec.so.1 => /usr/lib/libvorbisidec.so.1 (0x4020d000) libresolv.so.2 => /lib/libresolv.so.2 (0x40230000) libfdk-aac.so.2 => /usr/lib/libfdk-aac.so.2 (0x4024f000) libasound.so.2 => /usr/lib/libasound.so.2 (0x403bf000) libm.so.6 => /lib/libm.so.6 (0x4043b000) libdl.so.2 => /lib/libdl.so.2 (0x404dc000) librt.so.1 => /lib/librt.so.1 (0x404e9000) libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x404f9000) libpthread.so.0 => /lib/libpthread.so.0 (0x40566000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40586000) libc.so.6 => /lib/libc.so.6 (0x40599000) /lib/ld-linux.so.3 (0x40000000)
Ralphy
1-Touch, 5-Classics, 3-Booms, 2-UE Radio
Squeezebox client builds donations always appreciated.
-
2021-04-09, 07:46 #14
- Join Date
- Dec 2020
- Posts
- 261
Well, the diff is here: https://github.com/gordonb3/squeezep...t/1278f15.diff
For clarity, I've only been working on jive and for this I checked out the `public 7.8` branch. As the initial post in this thread states I had to solve various compiler issues to generate my first build, at which point I found that ldd showed no dynamic linking to many of the libraries that the original version does. So I made various changes throughout the included sources to convert the static links to dynamic and I currently need to run the final link command manually.
Interestingly I found that jive does not actually need to be linked to `resolv`, however on the Touch this causes jive to run without a GUI due to libspotify requiring it.