LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Software (https://www.linuxquestions.org/questions/linux-software-2/)
-   -   Is there any generic ARM Linux toolchain ? (https://www.linuxquestions.org/questions/linux-software-2/is-there-any-generic-arm-linux-toolchain-4175528748/)

vjn_bki 12-19-2014 06:34 AM

Is there any generic ARM Linux toolchain ?
 
I have to build an application that can run on any ARM-Linux platfrom. Is there any base line arm linux toolchain which I can use to build my application, such that it can run on all versions of ARM platform.

I used the toolchain 'arm-none-linux-gnueabi' (arm-2010q1-202-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar) from sourcery to build my application, but when I am trying to run my app on RaspberryPie (armv6) it is failing to load the shared libraries

"cannot open shared object file: No such file or directory" -
I have ensured that the RPATH set is pointing to the correct location and that the said library is present.

I suspect it is the problem with the toolchain I used to build my code

jpollard 12-19-2014 08:04 AM

Is there a generic ARM platform?

It is my understanding that each ARM CPU has its own peculiarities since each is tailored to a specific environment. Even the instruction sets vary depending on which level of ARM you are using.

And that makes it next to impossible to write an application that will run on all versions of ARM. Run on many, yes - but that only applies to most of the 32 bit CPUs and excludes the 64 bit versions...


for the number of differences, see http://en.wikipedia.org/wiki/List_of...oarchitectures, then check out the variations that GCC supports - https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html

The question becomes WHICH ARM (v7,8,9), WHICH floating point, using thumb instruction set or not(which I believe isn't supported for v9).

The problem you are reporting likely caused by the architecture not using the file you think it should (the path is actually different).

vjn_bki 12-22-2014 10:35 AM

thanks much for the reply.. that was really helpful.

"Run on many, yes - but that only applies to most of the 32" -

Do you mean that it can run on different versions of ARM (even though not all version) if they are all 32 bit ? I thought that if I am using a toolchain which has support for armv4t and armv7 then it will work only for those platforms and not work for armv5, armv6 ?

I am wondering how to make my build generic, it seems as if I will have to get toolchains for all combinations of
-- All different ARM platfroms
-- Hard Floating point / Soft floating point support
-- 32 Bit / 64 Bit
-- Low Endian / Big Endian
-- Thumb support / No thumb

There has to be a better work around for this as ARM is now a very common platform.

The problem with Raspberry PI was that it was expecting a HF based binary and I was using a toolchain which was meant for soft floating point support.

jpollard 12-22-2014 02:05 PM

I believe the answer is a qualified "yes".

Qualified, because each chip version produced by a factory is/can be customized to that particular use the chip is for (it is an embedded processor). But as far as the user space goes
you can look at the product tables to see what is available for each.

http://en.wikipedia.org/wiki/List_of...oarchitectures

And yes, this is a repeat.

Some chips don't have the DSP instructions.
Some don't have floating point.
Some have half precision floating point.

Most of them after v5 have the "thumb" instruction set - but if you limit the application to these you also lose the extended capability of the higher versions (and can lose performance).

The cortex M base is a bit more standardized, (goes from v4 through v7) but even there, the variations may cause problems for some applications.

And the 64 bit version doesn't have the thumb instruction set.


All times are GMT -5. The time now is 06:02 PM.