Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [paho-dev] not a shared executable

Hi René,
Wow, very detailed response. Thanks.  Note that I'm not using the java version of the mqtt library, but the C++ one (probably should have mentioned that more clearly). But you are probably right about the soft vs hard floating point issue having something to do with + different linux versions.  Anyway, it's working now, so I can happily play some more.
------ Original Message ------
From: "René Jansen" <rvjansen@xxxxxxxxx>
To: "General development discussions for paho project" <paho-dev@xxxxxxxxxxx>
Sent: 22/08/2013 15:20:52
Subject: Re: [paho-dev] not a shared executable

This might be the problem:

ARM processors are available in many different configurations, and because of considerations of pricing and power requirements, not all of these include hardware floating point units. The difference between these is the reason of the existence of two Embedded Application Binary Interfaces or EABIs for ARM: so float and VFP (Vector Floating Point). Although there is forward compatibility between soft and hard float, there is no backward compatibility. In the Linux community, releases built using these EABI’s are called armel based distributions.

Unfortunately, VFP has an inefficient way of passing floating point values through intermediate integer registers to the floating point registers where they can be used. is has given rise to a third EABI, which is called armhf, also called hard float. This architecture can be seen as the future, because the important Linux distributions are moving towards it. Depending on the release of your operating system, your Raspberry Pi or Beaglebone Black’s software can be operating in armel or armhf mode. The consequence of this is that the JVM implementation must match the architecture, or it will not work.

The JVM's that are installed using the package manager that is native to the operating system will choose the right architecture. For the Oracle Java versions, it is important to know that the released version 7 JVM is soft-float armel and that there is currently a JVM 8 preview that is hard-float. e recommended OS for the Raspberry Pi is Debian Wheezy “Raspbian”, which is hard float. The Beaglebone Black comes with Ångstrom Linux, which is soft-float and cannot run the Oracle Java 8 preview.

The easiest way to spot the architecture is to look for these components (armel of armhf) in the package names when installing software. There is a way to determine which EABI conventions were used, which is mentioned here for completeness: the command

readelf -A /proc/self/exe | grep Tag_ABI_VFP_args


Tag_ABI_VFP_args: VFP registers

when the OS distribution is armhf and nothing, when it is armel

(copied from The NetRexx Quickstart Guide). It would be good to coax autotools into doing this right.

best regards,

René Jansen.

On 22 aug. 2013, at 15:00, Ian Craggs <icraggs@xxxxxxxxxxxxxxxxxxxxxxx> wrote:

Hi Jan,

I can check those libraries later.  But, since I created them I realized that there are several Linux distributions that are used on the Raspberry Pi, and this library was built with the one I installed on my Pi, which is Debian I think. 

Those libraries don't necessarily work with other Linux distributions, or even a different version of the same distribution.  The only sure way will be to build the libraries yourself, I think. 

I think we ought to look to getting the Paho MQTT C client libraries into the Linux distributions.


On 08/22/2013 12:37 PM, jan.bogaerts@xxxxxxxxxx wrote:


I'm trying to use the prebuild paho libraries for the raspberry-pi, but when I want to run the application, it can't load the lib. When I check the library with the ldd command, it says that the files aren't shared executables, so it can't load them as shared libraries. Any suggestions?




paho-dev mailing list

paho-dev mailing list

Back to the top