Cross Compiling libavg for ARM

Orange Pi Development Boards

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:


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:

  1. First build and install MesaLib for ARM (version 7.9.2), as the default Mesa/OpenGL library in the qemu image has more dependencies.
  2. Download libavg 1.6 source code

    wget http://www.libavg.de/raw-attachment/wiki/DownLoad/libavg-1.6.0.tar.gz

  3. Extract it

    tar xzvf libavg-1.6.0.tar.gz
    cd libavg-1.6.0

  4. 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

  5. Remove SSE2 options in configure script:

    cat configure | sed s/-msse2// > configure.arm
    mv configure.arm configure
    chmod 755 configure

  6. 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”);

  7. 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

  8. Configure, build and install libavg:


This was tested in Ubuntu 11.04 (natty) with linaro gcc toolchain.

Support CNX Software - Donate via PayPal or become a Patron on Patreon

12
Leave a Reply

avatar
12 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Petercnxsoftdeniztunacnxsoft Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
deniztuna
Guest
deniztuna

Hi @cnxsoft.

I have a question about that installation parts. When i tried to use the command:
sudo mount -o loop,offset=$[106496*512]beagle_sd_alip_x11.img mnt

I always got the error which is:

mount: can’t find mnt in /etc/fstab or /etc/mtab

If you can give me a hand with that issue i ll be so glad. Thanks in advance.

deniztuna
Guest
deniztuna

@ cnxsoft

Thanks for the quick reply. It is ok now. But again I got a problem while trying to use the command:
cp mnt/usr/lib/* ~/edev/beagleboard/libs/lib/ -rf -d

Terminal is complaining about “cp: cannot stat `mnt/usr/lib/*’: No such file or directory”. I am following your instructions to get Xibo run on arm environment from that link:”http://www.cnx-software.com/2011/10/04/xibo-digital-signage-on-arm-beagleboard-overo/” . I created the folder of mnt but am I supposed to create mnt/usr and so on?

About buiding 1.6. I dont know if 1.7 is compatitable with Xibo display so if it is ok I ll take a look at it other then 1.6.

Thanks in advance.

deniztuna
Guest
deniztuna

When I try to remount it again I got a warning which is: “mount: according to mtab /home/vestel/beagle_sd_alip_x11.img is already mounted on /mnt/ as loop” so i guess it is successful?

I go over the link that you give and I got the same number too. I have a little info about that linux environment and the reason why I am trying to see the results of Xibo on ARM is we are using arm board on our smart boxes and want to implement a client into them. We got some parts from beagleboard so i ll give it a try on our boxes too. Since writng a new client for Android is gonna take a bunch of time I am hoping to manage it through your articles.

Thank you for your information.

deniztuna
Guest
deniztuna

Yes. I figured it out afterwards too. Wasted a bit time on it tough=). Well I ll give information if i can do it properly.

Thanks for your patience.

Peter
Guest
Peter

Is that using linaro-toolchain-binaries with ubuntu desktop system to cross build libavg better?