libavg is a high-level development platform for media-centric applications using Python as scripting language and written in C++.
Bear in mind that are many dependencies with libavg 1.6. I have not built all the libraries required, but instead simply taken the pre-built binaries and header files in the qemu overo image and copied the files as follows:
mkdir mnt
sudo mount -o loop,offset=$[106496*512] overo_sd_alip.img mnt
mkdir ~/edev/beagleboard/libs/lib -p
mkdir ~/edev/beagleboard/libs/include
cp mnt/usr/lib/* ~/edev/beagleboard/libs/lib/ -rf -d
cp mnt/lib/* ~/edev/beagleboard/libs/lib/ -rf -d
cp /mnt/usr/include/* ~/edev/beagleboard/libs/include -rf -d
sudo umount mnt
The -d flag skips the symlink, so we need to recreate then for all library so that the compiler can find libname.so instead of libname.so.12. Save the following scripts to symlinks.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/sh liblist=`ls *.so.??` for f in $liblist do echo $f fileres=`echo $f | sed 's/\..\{2\}$//'` ln -s $f $fileres done liblist=`ls *.so.?` for f in $liblist do echo $f fileres=`echo $f | sed 's/\..\{1\}$//'` ln -s $f $fileres done |
and run it where the arm libraries are located (in my case in /home/jaufranc/edev/beagleboard/libs/lib, /home/jaufranc/edev/beagleboard/libs/lib/arm-linux-gnueabi and /home/jaufranc/edev/beagleboard/libs/lib/mesa). This will create symlinks for most libraries, but not all. Some will still have to be created manually, e.g.:
ln -s libboost_thread.so.1.42.0 libboost_thread.so
ln -s libcrypto.so.0.9.8 libcrypto.so
ln -s libssl.so.0.9.8 libssl.so
Also delete the symlink between libjpeg.so and libjpeg.so.8 since we use another version of the library.
If a symlink is missing, we would generally get a warning of the type:
/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../../arm-linux-gnueabi/bin/ld: warning: libGL.so.1, needed by /home/jaufranc/edev/beagleboard/libs/lib/libGLU.so, not found (try using -rpath or -rpath-link)
Once this is done, here are the instructions to cross-compile libavg 1.6 for ARM:
- First build and install MesaLib for ARM (version 7.9.2), as the default Mesa/OpenGL library in the qemu image has more dependencies.
- Download libavg 1.6 source code
wget http://www.libavg.de/raw-attachment/wiki/DownLoad/libavg-1.6.0.tar.gz
- Extract it
tar xzvf libavg-1.6.0.tar.gz
cd libavg-1.6.0 - Install the following development packages:
sudo apt-get install libxml2-dev libpango1.0-dev libgraphicsmagick++1-dev libavformat-dev libavcodec-dev libfaad-dev libgsm1-dev libogg-dev libschroedinger-dev libspeex-dev libswscale-dev libboost-dev libboost-thread-dev
- Remove SSE2 options in configure script:
cat configure | sed s/-msse2// > configure.arm
mv configure.arm configure
chmod 755 configure - There is some x86 assembler in the code, we need to disable it.
Edit src/base/Exception.ccp and comment out the line:asm(“int $3”);
- To prevent testplayer from failing. Edit src/player/Makefile and make sure your replace occurences of -L/usr/include -lSDL, by -L/home/jaufranc/edev/beagleboard/libs/lib and create a symlink for the SDL library:
ln -s libSDL-1.2.so libSDL.so
You may also need to edit the Makefile as above for src/anim and src/wrapper
- Configure, build and install libavg:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
LDFLAGS="-L/home/jaufranc/edev/beagleboard/libs/lib \ -L/home/jaufranc/edev/beagleboard/libs/lib/mesa \ -L/home/jaufranc/edev/beagleboard/libs/lib/arm-linux-gnueabi -lGL -lX11 \ -lXext -lc -lxcb -lXau -lXdmcp -lz -llcms -ltiff -lfreetype -ljasper -ljpeg \ -lpng12 -lwmflite-0.2 -lltdl -lSM -lICE -lbz2 -luuid -lva -lgsm -lspeex \ -ltheoradec -ltheoraenc -lvorbis -lvorbisenc -lschroedinger-1.0 -lorc-0.4 \ -lvpx -logg -lpython2.7 -lcrypto -lssl -lpulse-simple -lpulse \ -lpulsecommon-0.9.22 -lX11-xcb -lXtst -lxcb-atom -ldbus-1 -lwrap -lsndfile \ -lFLAC -ldl -lm -lexpat -lpcre" \ CFLAGS="-I/home/jaufranc/edev/beagleboard/libs/include -I/usr/include" \ CXXFLAGS="-I/home/jaufranc/edev/beagleboard/libs/include -I/usr/include" \ ./configure --target=arm-linux-gnueabi --host=arm-linux-gnueabi \ --prefix=/home/jaufranc/edev/beagleboard/libs \ --includedir=/home/jaufranc/edev/beagleboard/libs/include/ \ BOOST_PYTHON_LIBS="-L/home/jaufranc/edev/beagleboard/libs/lib/arm-linux-gnueabi" \ --disable-v4l2 --disable-dc1394 --disable-sdltest make make install |
This was tested in Ubuntu 11.04 (natty) with linaro gcc toolchain.

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress