Porting from sheevaplug/pogoplug/goflex to Raspberry pi: “./myprogram: error while loading shared libraries: unexpected PLT reloc type 0x12”

Uncategorized

I appear to have something of a small ARM server habit – with four of them running at home right now.  

I like the fact that running 4 of these servers consumes less power than even a single low-end Intel server would (although I often find myself wishing I had the extra grunt that an Intel box could bring)

Sheevaplug was my first foray into the world of ARM – and I loved it so much that when I stumbled across some Seagate Freeagent Dockstar servers (which are based on the same board as the sheevaplug) in the bargain bin at Clas Ohlson I bought them – and when one of them blew up a year later, I bought a pogoplug (also, at that time, based on the same hardware).

Being based on more or less the same Marvell hardware brought other benefits: it was possible to copy binaries from one system to another and they’d run happily.  

 

My latest acquisition is a £25 Raspberry Pi  unit.  It’s running the new Debian wheezy raspbian Linux distro.  Alas they switched architecture from armel to armhf between the (original?) Debian squeeze and (“new” in mid 2012) Debian wheezy (raspbian) distributions for the Raspberry Pi.  Whilst the most basic “hello world” application (surprisingly!) can be copied from a Sheevaplug-type system to a Raspberry Pi, it’s less straightforward for nontrivial applications.

 

I see:

   “./myprogram: error while loading shared libraries: unexpected PLT reloc type 0x12”

 

 http://wiki.debian.org/ArmHardFloatPort discusses the differences between  armel and armhf – crucially the ABI is different – hence the incompatibilities.

The solution?  

As an interim workaround, running the older Debian Squeeze distro might make life easier (and permit binary sharing in the short term).  It also sounds like it may be possible to install the armel versions of the same libraries in parallel with the armhf versions on the same system (and presumably carefully manipulate LD_LIBRARY_PATH when running armel binaries) – but that sounds like a bit of a maintenance headache. Longer term I want to be running Raspbian and get the performance benefits of moving to armhf anyway.

The pragmatic answer (for my use case, anyway) is, therefore, to recompile.

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s