Linux Debugging: Listing Shared Libraries at Runtime

I had a library (a python plugin) that crashed and outputted the “very useful”: illegal instruction I tried pdb (the Python Debugger) to find the issue without success. So I tried to add some printf to this library but none were outputted at runtime.  So I guessed the illegal instructions was generated by the shared libraries. Let’s see how many libraries we’ve got: ldd libbrowsernode.so | wc -l 125 Oh dear!… 125 libraries.. This is where panic sets in. Luckily, there is a simple way to list the dynamic libraries as they are loaded (and some more useful info). Simply set: export LD_DEBUG=files before running your program. This is extremely verbose, so I recommend you redirect the output to a file. This method allowed me to find undefined symbols during dynamic libraries load time with errors such as: opening file=/usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so [0]; direct_opencount=1 14121: 14121:     /usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so: error: symbol lookup error: undefined […]

Pandaboard Cloud Cluster Running Google App Engine

Noritsuna Imamura showed an ARM cloud cluster built with 6 Pandaboards at  Linaro Connect Q4.11. Noritsuna is a member of the Open Embedded Software Foundation (OESF), a Japanese organization that support Open Source embedded software. The cluster is made of 6 panda boards with a total 6 GB of RAM (1GB per board) that runs the Google App Engine (http://code.google.com/appengine/) in Ubuntu/Linaro 11.09 release. The middleware used is TyphoonAE, a full-featured and productive serving environment to run Google App Engine (Python) applications. This type of server hosts web applications such as Rietveld (used in the demo below) to be run on (thin) clients. There are also plenty of other software (required by Google App Engine) that runs in this ARM cloud such as MySQL, Apache2, memcached and more. In the video, a power meter shows that the cluster consumes about 35 W in low activity mode. Norisuna had a comparison […]

Cross Compiling libavg for ARM

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 […]

Installing and running Xibo Linux Python Client in Acer Aspire One D255E

I have tried Xibo Linux Python Client 1.3.0 on my Acer Aspire One D255E netbook, here are the steps I followed. Install Ubuntu 10.04 LTS Since the client is only officially supported in Ubuntu 10.04 LTS, I had to install it first. After installation the network (ethernet and wifi) does not work,  please visit Installing Ubuntu 10.04 LTS in Acer Aspire One D255E for the instructions to resolve the networking issues as well as make the SD card reader work properly. Upgrade Xibo Server to version 1.3.0 The next step I did was to update the Windows XP server to version 1.3.0. I followed parts of the server installation instructions I previously wrote for version 1.2.0. Download xibo-server-1.3.0.zip Extract its content to c:\xampp\htdocs\xibo Run XAMPP Control Panel and start Apache and Mysql. Go to http://localhost/xibo Enter the admin username and password, it will ask you if you want to do […]

LinuxCon 2011 Presentation: Introduction to Python Programming Language

The third LinuxCon 2011 presentation is “Intro to Python” by Peter Krenesky, Lead Software Engineer at OSU Open Source Lab. Abstract: This presentation is a Python programming language tutorial with basics of Python including none, strings, formatting, data structures (tuple, list, dict, slices, etc…), classes (methods, inheritance, initializers, etc…), if statements, iterations and more. If you want to download the presentation slides, please go to Intro to Python and use the download button on top of the Slideshare presentation. If it does not work, you may also download a copy here or here. Jean-Luc Aufranc (CNXSoft)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. www.cnx-software.com

Xibo Digital Signage Version 1.3.0 Released

Xibo has just announced the release of Xibo 1.3.0 (codename: “Faye”). Bear in mind that this is a development release and is not supposed to be used in production environments. The next stable release will be version 1.4.0 and The current stable version is 1.2.2. If you would still like to evaluate Xibo 1.3.0, you may download it at https://launchpad.net/xibo/1.3/1.3.0 New features in Xibo 1.3.0: Permissions Overhaul: The most significant change in 1.3.0 is the permissions system in the server interface. This update introduces individual and group permissions for: Layouts Library Media Regions Region Media Assignment It is also now possible to assign permissions to “Everyone” on all of the above items. Media Manager Homepage: A simple user interface for managing layout/media assignments that the user has access to. This “homepage” can be assigned on a user by user basis. Customer Counter: The Python client has been enhanced to support […]

Cross-compiling Python for MIPS and ARM Platforms

Python programming language is used in several open source projects such as Sugar OS and Xibo. Let’s see if we can cross-compile it in Ubuntu 10.10 using a mips compiler. I’ll use the instructions given at http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html. Let’s download Python 2.7.1 first and extract the source code:

Then run the following command in Python-2.7.1 in order to build some tools for the host:

There is no patch for Python 2.7.1 cross-compilation in the link above, so let’s just try to configure and build it:

If we don’t use a patch the first error is:

So I used some older patch to create a new patch: http://www.cnx-software.com/patch/python-2.7.1-cross-compile.patch. You can download it an apply it as follows:

And repeat the step above to configure and cross-compile Python for mips. Finally install Python in ~/Python-2.7.1/install for example:

After that copy all necessary files in ~/Python-2.7.1/install to your […]

OLPC XO 1.75 Hardware, Firmware and Software

OLPC demo’ed their 3rd generation laptop – OLCP XO 1.75 – based on Marvell Armada 610 at CES 2011. The good thing about this platform is that they opened most of it including the hardware, the software and for the first time the firmware. However, I found out it’s not so easy to find the hardware / software development information and source on the OLPC site, so I’ve decided to make a summary and provide links to the hardware, firmware and software for OLPC XO 1.75. OLPC XO 1.75 Hardware The XO-1.75 is powered by Marvell Armada 610 CPU (88AP610) with an ARM core clocked at 1Ghz. It has 1GB DDR3 SDRAM, 4GiB NAND Flash, a TFT display, an SD Card slot, Wi-Fi,  a few USB ports and a camera. I believe the touchscreen is not part of the current hardware, but the block diagram below should be close to […]