Since I have just compiled Asunder, and since it was not super straightforward (I mean, it was easy, but a beginner in compilation might have given up after the first few steps, not understanding what to do next), I wanted to share in a short article how to do it. Of course you will need the Code::blocks PND as a prerequisite. And maybe 30 minutes or so in front of you. You will end up with major l33t Pandora Compiling m4d skillz, I promise. Stop the TV and let’s go.
First thing you need to do: get the tarball archive of asunder on sourceforge, latest version, and extract it somewhere on your SD Card (ext2 SD card, not FAT32 especially if you do development). Then start Code::blocks in the command line interface (you should find that in the Development menu).
After reaching the prompt, go in the asunder folder. If you do a quick
you notice there is a configure file in there, so that means the compilation is likely to be quite easy. Run configure this way:
Why use a prefix? Well, you don’t want asunder to be installed in the NAND so the prefix will re-reroute the installation to a separate directory. “but wait, I have not created that directory yet”, you might say. Don’t worry, at this stage we just tell configure where the folder WILL be later on – there will not be any actual write operation on that directory until you give a install command later on.
Let’s come back to what happens after we hit configure…
After a while, you will hit an error. The script will complain it does not find libccdb. Libcddb is a requirement for Asunder, and it was clearly indicated in the author’s page (http://littlesvr.ca/asunder/). By the way, this is great when authors DO PRECISELY THAT. If you ever create software please remember to specify this out, it’s always very frustrating to find out by yourself, one by one, the missing dependencies.
So, a quick internet search will return the sources for libcddb. Again, get the tarball, extract it somewhere on your SD Card, go back into Code::Blocks and get ready to configure it. But since this is going to be used a supporting library, do not give him a prefix such as /mnt/utmp/libcddb… no no, you just need to integrate this library as a user library part of code::blocks (so that it can be used by all programs requiring it from now on). To do that, you do this:
This should proceed without any issue. Then, you know what to do:
After a while, you can do:
It will install the library in codeblocks. Once this is done you can go back to the asunder folder. Try again:
Now this should work ! Once the configuration is complete, you can make it:
Before doing a make install, you need to create the asunder folder we mentioned before. Remember ? I recommend to go out of the source directory (cd ..), and simply create a asunder folder:
Done. Now how do we link back this folder to the prefix we specified? Well, we use a symlink:
sudo ln -s $PWD/asunder /mnt/utmp
You need a sudo (super user) permission here since you are creating a link in a root folder – which is something a simple user cannot do without super user access.
This effectively creates a “asunder” folder in /mnt/utmp – which is a virtual link to the local directory on your SD Card. Anything copied into that virtual folder will be copied back on that very directory. You can by the way see this visually by going in your file manager, root folder, and going through the mnt and then the utmp folder: you will find “asunder” there, with an arrow indicating this is a linked folder.
Now you go back in the asunder source folder (yes, again!) and finish:
This instruction will simply copy the appropriate executable and libraries to the location of your prefix. You should see your SD Card LED blinking a lot when doing this, another proof it does not write stuff to NAND.
You can now go in your “asunder” folder (the one you linked with the prefix) while staying in code::blocks command line, and confirm that it works by running…
That should start the application. Hurray !
However, after a few clicks in the preferences, you will notice that asking for OGG compression or MP3 compression will trigger an error message, saying that there is no OGG or LAME MP3 encoder available or something like that. Yikes! At least FLAC works so it’s not completely useless. Adding the LAME MP3 encoder requires another compilation.
Get the tarball for LAME sources:
Then just like we did before, we go through the routine…
- extract it
- go in the extracted folder
- run a ./configure –prefix=/mnt/utmp/codeblocks/usr
- make install
However this time it’s not about including a library for compilation. Asunder specifically mentions it is looking for the lame encoder and oggenc (encoder) in the path of the program. So this is not about running the compilation of asunder again. No, here, you will go in /mnt/utmp/codeblocks/usr and check in the /bin folder for the “lame” executable. Found it ? Great! Now, just copy it into your asunder folder (the one where you installed it, not the sources), in the bin/ folder where you already have the asunder executable.
You can start asunder again from the code::blocks command line, and now when selecting MP3 compression you will see the error is gone. Well done. You can do the same thing for OGG if you like and if you need it.
Before packaging it into a PND, do not forget to do the following before leaving code::blocks. In the asunder folder, create a lib directory:
since you want to ensure you have all the libs you need when OUT of code::blocks environment. Just go in the libs directory, and run copy_libs.sh on the binary target for analysis:
cd lib copy_libs.sh ../bin/asunder
it will check the libraries required by asunder in the bin directory and copy the right ones in the lib directory.
Before leaving code::block you can go back into /mnt/utmp and remove the symlink you created earlier.
cd /mnt/utmp sudo rm asunder #if you don't do that, your will not be able to start your PND once packaged, since the asunder folder will remain in /mnt/utmp/ and cause conflicts with the one the PND wants to create at run time.
I will not go into the details of packaging a PND this time. But you should be all set to make a PND package from there. You can check the last steps from the Arkanoid tutorial or the Dillo tutorial, that should be sufficient. Or bug me in the comments if you are stuck there.
So, how do you feel now that you have m4d skillz ?